为什么使用df.drop删除列删除整个数据框架



在这篇文章之后,我尝试从数据框架删除两个列:

import pandas as pd
from io import StringIO
A_csv = """cases,population,country,year,type,count
745,19987071,Afghanistan,1999,population,19987071
2666,20595360,Afghanistan,2000,population,20595360
37737,172006362,Brazil,1999,population,172006362
80488,174504898,Brazil,2000,population,174504898
212258,1272915272,China,1999,population,1272915272
213766,1280428583,China,2000,population,1280428583"""
with StringIO(A_csv) as fp:
    A = pd.read_csv(fp)
print(A)
print()
dropcols = ["type", "count"]
A = A.drop(dropcols, axis = 1, inplace = True)
print(A)

结果

      cases  population      country  year        type       count
0     745    19987071  Afghanistan  1999  population    19987071
1    2666    20595360  Afghanistan  2000  population    20595360
2   37737   172006362       Brazil  1999  population   172006362
3   80488   174504898       Brazil  2000  population   174504898
4  212258  1272915272        China  1999  population  1272915272
5  213766  1280428583        China  2000  population  1280428583
None

有明显的东西逃脱了我吗?

在评论中提到了这些解决方案。我只是在这篇文章中拿出来。


使用drop时,请注意您拥有的两个选项。

其中之一是删除inplace。完成此操作后,将在原始上对数据框进行操作,并进行更改。这意味着这足够了。

A.drop(dropcols, axis=1, inplace=1)
A
    cases  population      country  year
0     745    19987071  Afghanistan  1999
1    2666    20595360  Afghanistan  2000
2   37737   172006362       Brazil  1999
3   80488   174504898       Brazil  2000
4  212258  1272915272        China  1999
5  213766  1280428583        China  2000

作为df.drop文档指定:

inplacebool,默认False

如果True,请进行内置操作并返回无。

请注意,当drop称为Inplace时,它将返回None(这是任何不返回值的函数的默认值),并且A将已经更新。

另一个选项是删除,但返回副本。这意味着原件未经修改。因此,您现在可以做:

B = A.drop(dropcols, axis=1)
B    
    cases  population      country  year
0     745    19987071  Afghanistan  1999
1    2666    20595360  Afghanistan  2000
2   37737   172006362       Brazil  1999
3   80488   174504898       Brazil  2000
4  212258  1272915272        China  1999
5  213766  1280428583        China  2000
A
    cases  population      country  year        type       count
0     745    19987071  Afghanistan  1999  population    19987071
1    2666    20595360  Afghanistan  2000  population    20595360
2   37737   172006362       Brazil  1999  population   172006362
3   80488   174504898       Brazil  2000  population   174504898
4  212258  1272915272        China  1999  population  1272915272
5  213766  1280428583        China  2000  population  1280428583

BA分别存在。

请注意,您没有保存任何与inplace一起使用的内存 - 两种方法都创建一个副本。但是,在前一种情况下,将在场景后面制作副本,并将更改添加到原始对象中。

相关内容

  • 没有找到相关文章

最新更新