我有一个如下所示的数据框:
0 1 2 3 4 5 6
0 a(A) b c c d a a
1 b h w k d c(A) k
2 g e(A) s g h s f
3 f d s h(A) c w n
4 e g s b c e w
我想获取每列中包含 (A)
的单元格的索引。
0 0
1 2
2 NaN
3 3
4 NaN
5 1
6 NaN
我试过这段代码,但结果没有达到我的预期。
df.apply(lambda x: (x.str.contains(r'(A)')==True).idxmax(), axis=0)
结果是这样的:
0 0
1 2
2 0
3 3
4 0
5 1
6 0
我认为如果该列中没有 (A)
,它会返回第一个索引。
我该如何解决?
最佳答案
使用Series.where
用于设置默认缺失值以覆盖 DataFrame.idxmax
的默认 0
值:
mask = df.apply(lambda x: x.str.contains('A'))
s1 = mask.idxmax().where(mask.any())
print (s1)
0 0.0
1 2.0
2 NaN
3 3.0
4 NaN
5 1.0
6 NaN
dtype: float64
关于python - 在 DataFrame 中查找第一次出现的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57070355/