有没有一种干净的方法可以提取一行并将其从原始pandas数据帧中删除



我相信我已经搜索了论坛,但找不到答案。我想知道是否有一种干净的方法:

  1. 根据某个值条件提取一行
  2. 从原始数据帧中删除提取的行

就像某种高级的"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]

相关内容

  • 没有找到相关文章

最新更新