首页 > 解决方案 > 从熊猫数据框中提取条件单元格值的 Pythonic 方法是什么

问题描述

我的数据框new_df包括 3 列:“姓名”、“性别”和“总计”。我需要根据名称和性别的组合从总列中提取值。

        name        gender  Total
357328  Barbara     F       3114462
357329  Patricia    F       3846693
357330  Betty       F       1138056
357331  Shirley     F       1075104
357332  Carol       F       2054088
my_name = 'Betty'
new_df[(new_df.name == my_name) & (new_df.gender == 'F')]['Total'])

此代码有效返回正确的值,1138056但我确信有更好的方法来获得结果。

标签: pythonpandas

解决方案


您可以通过掩码和列名boolean indexing与过滤器结合使用,输出为:DataFrame.locSeries

my_name = 'Betty'
s = new_df.loc[(new_df.name == my_name) & (new_df.gender == 'F'), 'Total']

print (s)
357330    1138056
Name: Total, dtype: int64

然后如果匹配至少一个值并且需要先选择:

print (s.values[0])
1138056
print (s.iloc[0])
1138056
print (s.iat[0])
1138056

或者如果可能没有匹配值可以使用nextwith iter,在哪里可以设置默认值:

print (next(iter(s), 'no match'))
1138056

my_name = 'John'
s = new_df.loc[(new_df.name == my_name) & (new_df.gender == 'F'), 'Total']

print (next(iter(s), 'no match'))
no match

推荐阅读