如何按多个条件过滤熊猫数据框列

时间:2020-12-28 18:41:05

标签: python pandas

我试图找出美国、法国和西班牙 2013 年的收入中位数。我的熊猫数据框看起来像 enter image description here

我正在使用以下代码

 df[(df.year == 2013) & (df.country == ['US', 'FR', 'ES'])]

并收到此错误 - ValueError: Lengths must match to compare

2 个答案:

答案 0 :(得分:3)

要过滤不同可能性之间的值,请使用 Series.isin

df[(df.year == 2013) & (df.country.isin(['US', 'FR', 'ES']))]

答案 1 :(得分:1)

你正在将一个pandas系列与一个列表进行比较,pandas理解的是你想通过列表逐项获取值相等的掩码,因此它要求列表与pandas系列对象的长度相同,找出字符串是否是以下之一(或具有它们的子字符串), 试试这个:

df[(df.year == 2013) & (df.country.str.conatins('|'.join(['US', 'FR', 'ES']))]

更新

@azro 的另一个答案更相关,因为它检查相等性而不是包含,所以......至少我已经尝试过:)