首页 > 解决方案 > 使用 Pandas 删除多列

问题描述

我有以下数据集。我试图弄清楚如何通过“Unnamed 9”删除列“Unnamed 5”。我已经尝试了下面的代码,但它不起作用。

数据(名为 mapping_table):

Gender|Age|Weight|Height|Unnamed 5| Unnamed 6| Unnamed 7| Unnamed 8| Unnamed 9|

代码:

mapping_table.drop(mapping_table.index[(mapping_table.columns.get_loc("Unnamed: 11")):(mapping_table.columns.get_loc("Unnamed: 19"))],axis=1,inplace=True)

错误:

KeyError: 'labels [11 12 13 14 15 16 17 18] not contained in axis'

有没有更简单的方法来做到这一点?我觉得我应该可以使用 mapping_table.drop([mapping.table["Unnamed 5":"Unnamed 9"]])

标签: pandas

解决方案


数据:

df = pd.DataFrame(None, columns = "Gender|Age|Weight|Height".split('|')+['Unnamed ' + str(x) for x in range(0,15)])
Empty DataFrame
Columns: [Gender, Age, Weight, Height, Unnamed 0, Unnamed 1, Unnamed 2, Unnamed 3, Unnamed 4, Unnamed 10, Unnamed 11, Unnamed 12, Unnamed 13, Unnamed 14]
Index: []

代码:

df = df.drop(df.columns[df.columns.str.contains('Unnamed\s[5-9]')], axis = 1)

结果:

Empty DataFrame
Columns: [Gender, Age, Weight, Height, Unnamed 0, Unnamed 1, Unnamed 2, Unnamed 3, Unnamed 4, Unnamed 10, Unnamed 11, Unnamed 12, Unnamed 13, Unnamed 14]
Index: []

推荐阅读