我有一种叫df的熊猫数据帧:
email | list
___________________________
email1@email.com | [0,1]
email1@email.com | [2,1]
email1@email.com | [0,3]
email1@email.com | [0,0]
email1@email.com | [0,1]
我想从具有0列表的df中检索所有行:[0,0]
我在做:
df2 = df[df['list'] == [0,0]]
但我得到了以下错误:
ValueError: Arrays were different lengths: 5 vs 2
将列表列表与单个条目进行比较。您应该使用
iterrows()
来过滤df。iterrows()
创建生成元组的生成器,其第二个条目是列字典。您可以遍历它们并与之匹配,然后构建一个新的数据帧。通过使用字典的键来填充它,您可以在任何数据帧上使用此方法。
这不起作用的原因是:
因为df['list']是一个5元素长的列表,而
[0, 0]
是一个两元素长的列表。在评估你的面具时失败了更新正确的解决方案
我认为解决这个问题的最快方法是创建一系列数据帧长度为[0,0]的元素,并将这个系列与您的列进行比较
这通过将列表中的每个元素与
[0, 0]
进行比较而不是将列表df['list']
与[0, 0]
进行比较来创建掩码使用此掩码,然后可以创建新的数据帧
相关问题 更多 >
编程相关推荐