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