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

标签 python pandas

我已经练习 python 一段时间了,刚接触 pandas 开始学习数据帧。我知道 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

最佳答案

根据您的情况制作面具。使用 bool 索引根据条件选择要删除的行。然后通过使用 ~(不是)反转掩码将 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

关于Python,有没有办法将 df.drop 分配给新变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48234851/

相关文章:

Python:如何从字典中仅提取值?

python - 如何改进我的回归模型,使随机森林回归更准确

python - DataFrame 的给定列非零的行数

python - Pandas 映射 2 dfs

python - 抓取多个页面,保持独立

python - python 中的一个简单的一维寻峰程序

python - 匹配正则表达式(python)

python - 数据框中两列或多列之间的 If 语句

python - 如何获取手套向量的特征名称

python - Pandas:Drop() int64 基于值返回对象