我相信我已经搜索了论坛,但找不到答案。我想知道是否有一种干净的方法:
- 根据某个值条件提取一行
- 从原始数据帧中删除提取的行
就像某种高级的"drop"方法;那太好了。感谢您的考虑!
样本代码:
#SETUP#
import pandas as pd
data = pd.DataFrame({'A': {0: 'a', 1: 'b', 2: 'z', 3: 'd'},
'B': {0: 1, 1: 3, 2: 5, 3: 7},
'C': {0: 2, 1: 4, 2: 6, 3: 8}})
display(data)
#TASK#
data_z = data[data.A.isin(['z']) == True]
data = data[data.A.isin(['z']) == False]
display(data)
display(data_z)
输入:
>>> data
A B C
0 a 1 2
1 b 3 4
2 z 5 6
3 d 7 8
输出:
>>> data
A B C
0 a 1 2
1 b 3 4
3 d 7 8
>>> data_z
A B C
2 z 5 6
我认为你的方法是干净的,只是不需要通过True/False
进行比较,对于通过~
:进行False
反转掩码的比较
data_z = data[data.A.isin(['z','ww'])]
data = data[~data.A.isin(['z','ww'])]
最好只调用一次掩码:
m = data.A.isin(['z','ww'])
data_z = data[m]
data = data[~m]
如果比较一个值:
m = data.A.eq('z')
data_z = data[m]
data = data[~m]