Pandas.Dataframe:有没有一种有效的方法来翻译多个WHERE SQL语句?

时间:2017-05-19 12:12:17

标签: python sql pandas

所以我想翻译像

这样的东西
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()。

1 个答案:

答案 0 :(得分:2)

使用Series方法isin()与列表进行比较:

mydataframe[mydataframe['myattribute'].isin([8945, 8899, 4501, 6874, 3256, 8881, 1017])]