要删除DataFrame中的列,我可以成功使用:
del df['column_name']
但为什么我不能使用以下选项?
del df.column_name
由于可以通过df.column_name访问该系列,所以我希望这能奏效。
要删除DataFrame中的列,我可以成功使用:
del df['column_name']
但为什么我不能使用以下选项?
del df.column_name
由于可以通过df.column_name访问该系列,所以我希望这能奏效。
当前回答
按索引删除
删除第一列、第二列和第四列:
df.drop(df.columns[[0,1,3]], axis=1, inplace=True)
删除第一列:
df.drop(df.columns[[0]], axis=1, inplace=True)
此处有一个可选参数可以在不创建副本的情况下修改数据。
被逮捕的
列选择、添加、删除
删除列列名:
df.pop('column-name')
示例:
df = DataFrame.from_items([('A', [1, 2, 3]), ('B', [4, 5, 6]), ('C', [7,8, 9])], orient='index', columns=['one', 'two', 'three'])
打印df:
one two three
A 1 2 3
B 4 5 6
C 7 8 9
df.drop(df.columns[[0],axis=1,inplace=True)打印df:
two three
A 2 3
B 5 6
C 8 9
三=df.pop(“三”)打印df:
two
A 2
B 5
C 8
其他回答
从版本0.16.1开始,您可以
df.drop(['column_name'], axis = 1, inplace = True, errors = 'ignore')
一个很好的补充是,只有列存在时才可以删除它们。这样,您可以覆盖更多的用例,并且它只会从传递给它的标签中删除现有列:
例如,只需添加errors='ignore':
df.drop(['col_name_1', 'col_name_2', ..., 'col_name_N'], inplace=True, axis=1, errors='ignore')
这是熊猫0.16.1以后的新版本。文档在这里。
在Pandas 0.16.1+中,只有当列按照eiTan LaVi发布的解决方案存在时,才能删除它们。在此版本之前,您可以通过条件列表理解获得相同的结果:
df.drop([col for col in ['col_name_1','col_name_2',...,'col_name_N'] if col in df],
axis=1, inplace=True)
要删除特定列之前和之后的列,可以使用truncate方法。例如:
A B C D E
0 1 10 100 1000 10000
1 2 20 200 2000 20000
df.truncate(before='B', after='D', axis=1)
输出:
B C D
0 10 100 1000
1 20 200 2000
通过使用自动补全或“IntelliSense”而不是字符串文字来获得优势:
del df[df.column1.name]
# or
df.drop(df.column1.name, axis=1, inplace=True)
它适用于当前的Pandas版本。