首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python,有没有办法把df.drop赋给一个新的变量?

Python,有没有办法把df.drop赋给一个新的变量?
EN

Stack Overflow用户
提问于 2018-01-13 06:25:03
回答 2查看 1.5K关注 0票数 2

我练习python已经有一段时间了,刚刚开始接触pandas,开始学习数据帧。我知道df.drop()会根据某些要求删除列/行,并生成一个新的df。我想知道,有没有一种方法可以将这些被删除的列/行分配给一个新的变量以用于日志记录?

代码语言:javascript
复制
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:

代码语言:javascript
复制
letter
0      a
4      a
5      a
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-01-13 06:52:14

为你的情况创建一个口罩。使用布尔索引根据条件选择要删除的行。然后,通过使用~ (not)反转掩码,将df1重新分配给。

代码语言:javascript
复制
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
票数 2
EN

Stack Overflow用户

发布于 2018-01-13 06:43:57

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

代码语言:javascript
复制
df2 = df1.loc[df1.letter == "a"]
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48234851

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档