Web*_*bcy 4 python dataframe pandas
这是我的df。我想在每个包含以下内容的列中获取第一个值(F)
>>> d = {0: ['1', '2(F)', '6', '8', '5'],
1: ['8(F)', '6', '8', '4(F)', '4'],
2: ['1', '6', '8(F)', '4(F)', '5'],
3: ['1', '8', '8', '1', '5']}
>>> df = pd.DataFrame(data=d)
>>> df
0 1 2 3
0 1 8(F) 1 1
1 2(F) 6 6 8
2 6 8 8(F) 8
3 8 4(F) 4(F) 1
4 5 4 5 5
Run Code Online (Sandbox Code Playgroud)
结果应该像这样
0 2(F)
1 8(F)
2 8(F)
3 NaN
Run Code Online (Sandbox Code Playgroud)
但是当我使用下面的代码时,我收到了一些错误
>>> mask = df.apply(lambda x: x.str.contains('F'))
>>> a = mask.idxmax().where(mask.any())
>>> print(df[a])
KeyError: '[nan] not in index'
Run Code Online (Sandbox Code Playgroud)
这是一种方法
mask = df.applymap(lambda x: '(F)' in x)
df[mask].bfill().iloc[0,]
Out[624]:
0 2(F)
1 8(F)
2 8(F)
3 NaN
Name: 0, dtype: object
Run Code Online (Sandbox Code Playgroud)