Python 熊猫中的布尔子集

Python 熊猫中的布尔子集,python,pandas,Python,Pandas,我想用python中的pandas来子集一个数据帧 目前我正在使用 df_update = df[(df.X == 1) & ((df.Y == 'A') | (df.Y == 'B') | (df.Y == 'C'))] 有没有办法将代码简化为: df_update = df[(df.X == 1) & (df.Y in ['A', 'B', 'C'])] 非常感谢。是的,有: 您可以使用isin,或新语法: isin可能更快,尤其是对于小帧query有时会更方便(有时对于

我想用python中的pandas来子集一个数据帧

目前我正在使用

df_update = df[(df.X == 1) & ((df.Y == 'A') | (df.Y == 'B') | (df.Y == 'C'))]
有没有办法将代码简化为:

df_update = df[(df.X == 1) & (df.Y in ['A', 'B', 'C'])]
非常感谢。是的,有:


您可以使用
isin
,或新语法:


isin
可能更快,尤其是对于小帧
query
有时会更方便(有时对于非常大的帧可能会更快。)

我想插话说一下
df.query(“x in{}.format(my_list))
过去对我很有效(在重新键入有效值太麻烦的情况下)@PaulH:对于这一点,你可以使用
df.query(“Y in@my_list”)
而不是构建字符串。
df_update = df[(df.X == 1) & df.Y.isin(['A', 'B', 'C'])]
>>> df = pd.DataFrame({"X": [1,1,2,1,1], "Y": ["A","D","B","C", "D"]})
>>> df[(df.X == 1) & df.Y.isin(["A","B","C"])]
   X  Y
0  1  A
3  1  C
>>> df.query("X == 1 and Y in ['A','B','C']")
   X  Y
0  1  A
3  1  C