关注此post后,我尝试将其从数据框中删除两列:
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
有什么东西可以逃避我吗?
答案 0 :(得分:2)
评论中提到了这些解决方案。我只是在这篇文章中充实它们。
使用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
inplace
:bool
,默认False
如果
True
,请在此处进行操作并返回无。
请注意,当在地方调用drop
时,它会返回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
的任何内存 - 两种方法都会创建副本。但是,在前一种情况下,在场景后面进行复制,并将更改添加回原始对象。