pandas 中的布尔子集
Boolean subset in 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'])]
非常感谢。
是的,有:pandas.DataFrame.isin
。
df_update = df[(df.X == 1) & df.Y.isin(['A', 'B', 'C'])]
您可以使用 isin
,或新的 query
语法:
>>> 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
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'])]
非常感谢。
是的,有:pandas.DataFrame.isin
。
df_update = df[(df.X == 1) & df.Y.isin(['A', 'B', 'C'])]
您可以使用 isin
,或新的 query
语法:
>>> 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
isin
可能会更快,尤其是对于小帧; query
有时会更方便(对于非常大的帧有时会更快。)