首页 > 解决方案 > 如何使用 Python Pandas 在数据框的最后一列中获取第一个具有货币格式的单元格的行索引

问题描述

现在我有一个数据框:

import pandas as pd

s1 = pd.Series(['a', 'b', 'c'])
s2 = pd.Series(['e', '$200', 'f'])
s3 = pd.Series(['e', '$300', '$400'])
s4 = pd.Series(['f', '$500', '$600'])
    
df = pd.DataFrame([list(s1), list(s2), list(s3), list(s4)],  columns =  ['A', 'B', 'C'])
df

    A   B   C
0   a   b   c
1   e   $200    f
2   e   $300    $400
3   f   $500    $600

我想浏览最后一列中的所有单元格,并尝试找到第一个具有货币格式的单元格。第一个所需的单元格是 df['C'][2]。我要返回的行索引是 2。

标签: pythonpandasdataframe

解决方案


IIUC,您可以执行以下操作:

df.iloc[:, -1].str.match(r'^\$\d+').idxmax()

输出

2

它的工作原理如下:

  • df.iloc[:, -1]选择最后一列
  • .str.match(r'^\$\d+')使用match创建一个布尔数组,如果匹配货币格式则为 True。
  • .idxmax()在 Python 中 True -> 1 和 False -> 0,所以 idxmax 会在数组中找到最大值,如果有多个它将返回第一个。查看文档的更多信息。

推荐阅读