Python,有没有办法将df.drop分配给一个新变量?

时间:2018-01-12 22:25:03

标签: python pandas

我已经练习python一段时间了,只是进入熊猫开始学习数据帧。我知道df.drop()会根据某些要求删除一个列/行并生成一个新的df。我想知道,有没有办法将这些删除的列/行分配给新变量用于记录目的?

import pandas as pd
L = ["a","b","c","d","a","a"]
df1 = pd.DataFrame(L)
df1.columns = ['letter']
#print(df1)

df2 = df1.drop(df1.letter == "a", axis=0)
print(df2)

 letter
2      c
3      d
4      a #why is this row not removed?
5      a #why is this row not removed?

然而,这甚至不会打印一个新的df2,其中所有带有“a”的行都被删除了(这里的单独问题不确定为什么会这样)。

将删除的列分配给新的df不起作用,因为它使用的是初始数据帧df1。我只是不确定如何制作两个数据帧,一个只有删除的列,另一个删除的列被删除。

我想要一个打印的df3:

letter
0      a
4      a
5      a

2 个答案:

答案 0 :(得分:1)

我会在删除之前选择特定的行:

df2 = df1.loc[df1.letter == "a"]

答案 1 :(得分:1)

为您的病情创建一个面具。使用布尔索引根据条件选择要删除的行。然后使用df1(不是)反转掩码,重新分配~

mask = df1['letter'] == 'a'
removed_rows = df1[mask]
df1 = df1[~mask]

>>> df1
  letter
1      b
2      c
3      d

>>> removed_rows
  letter
0      a
4      a
5      a