我试图找出美国、法国和西班牙 2013 年的收入中位数。我的熊猫数据框看起来像
我正在使用以下代码
df[(df.year == 2013) & (df.country == ['US', 'FR', 'ES'])]
并收到此错误 - ValueError: Lengths must match to compare
答案 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 的另一个答案更相关,因为它检查相等性而不是包含,所以......至少我已经尝试过:)