在这篇文章之后,我尝试从数据框架删除两个列:
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
文档指定:
inplace
:bool
,默认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
B
和 A
分别存在。
请注意,您没有保存任何与inplace
一起使用的内存 - 两种方法都创建一个副本。但是,在前一种情况下,将在场景后面制作副本,并将更改添加到原始对象中。