如何在数据帧中搜索部分字符串并使用Pandas返回特定单元格



我有一个带有非标准列的数据帧(所有列的信息都不相同(。我想搜索一个特定的短语,它可能出现在一行的某一列中,也可能不出现在某一列,然后返回下一个单元格的值。例如:

A               B               C
How many?       5               Blah blah
Blah            How many?       7
How many?       13              Blah
Blah            Blah            Blah

我想知道如何搜索短语"多少?",然后在下一个单元格中返回值(5/7/13/null(

带布尔值和shift

df[df.eq('How many?').shift(1,axis=1).fillna(False)]
Out[142]: 
A    B    C
0  NaN    5  NaN
1  NaN  NaN    7
2  NaN   13  NaN
3  NaN  NaN  NaN

更新

s1=df.eq('How many?').shift(1,axis=1).fillna(False)
s2=df.eq('How many?')
df[s1|s2]
Out[154]: 
A          B    C
0  How many?         5  NaN
1       NaN  How many?    7
2  How many?        13  NaN
3       NaN        NaN  NaN

使用numpy数组更容易索引:

mask = df.values == 'How many?'
your_list = [df.values[i, j+1] for i, j in zip(*np.where(mask)) if j < df.values.shape[1]-1]
# yourlist = ['5', '7', '13']

最新更新