所以我想翻译像
这样的东西SELECT *
FROM MY_TABLE
WHERE MY_ATTRIBUTE IN (8945, 8899, 4501, 6874, 3256, 8881, 1017)
在python中使用Pandas数据帧。
阅读this,方法是
mydataframe[mydataframe['myattribute'] == 8945 |
mydataframe['myattribute'] == 8899 |
mydataframe['myattribute'] == 4501 |
mydataframe['myattribute'] == 6874 |
mydataframe['myattribute'] == 3256 |
mydataframe['myattribute'] == 8881 |
mydataframe['myattribute'] == 1017]
这是非常不美观的,并且随着长属性和大值列表而变得更糟。
有没有办法用较少的冗余代码正确地完成它?
像
这样的东西mydataframe[mydataframe['myattribute'] in (8945, 8899, 4501, 6874, 3256, 8881, 1017)]
会很好,但会引发以下错误:
ValueError:系列的真值是不明确的。使用a.empty,a.bool(),a.item(),a.any()或a.all()。
答案 0 :(得分:2)
使用Series
方法isin()
与列表进行比较:
mydataframe[mydataframe['myattribute'].isin([8945, 8899, 4501, 6874, 3256, 8881, 1017])]