python - 获取每列中的第一个出现值

标签 python pandas dataframe

这是我的 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

结果应该是这样的

0    2(F)
1    8(F)
2    8(F)
3     NaN

但是当我使用下面的代码时,我收到了一些错误

>>> mask = df.apply(lambda x: x.str.contains('F'))
>>> a = mask.idxmax().where(mask.any())
>>> print(df[a])

KeyError: '[nan] not in index'

最佳答案

这是一种方式

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

关于python - 获取每列中的第一个出现值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57077508/

相关文章:

python - Stormpath (python) - 获取提供商数据

python - Pandas - 删除至少两列中包含 0 的所有行

python - 基于 MultiIndex 将值插入 pandas 数据框

r - 如何对数据框进行排序

python - 将 JSON 文件读入 Spark 时出现 _corrupt_record 错误

python - 在 Pandas 中创建具有条件的新列

Python整数缓存

python - 子函数的自定义打印函数 yield

python - Pandas,检查 datetimeindex 的重采样 30 分钟时间段中是否存在时间戳值

python - 在 ipython 解释器中执行文件