python - 在 DataFrame 中查找第一次出现的索引

标签 python pandas dataframe

我有一个如下所示的数据框:

     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/

相关文章:

python - Pandas:用 np.nan 替换包含 0 的列子集中的所有单元格

python - 如何通过 python 使用 smartystreets

python - 如何加速 pandas groupby - 应用函数与 R 的 data.table 相媲美

python - 简单的 Python TCP 服务器不适用于 Amazon EC2 实例

python - 如何在 Pandas 中组合和形成复杂的数据框

python - 制作 Pandas 系列的直方图

python - Django + AWS : files not syncing to S3

python - 从字典创建 pandas 数据框

python - 高效地逐行构建 Pandas 数据框

r - 将数据帧中的值与另一个数据帧中的值进行匹配,并用另一个数据帧中的相应模式替换前一个