Python 熊猫中的布尔子集
我想用python中的pandas来子集一个数据帧 目前我正在使用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有时会更方便(有时对于
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