从多个数据框中删除多个列

时间:2017-05-24 16:26:34

标签: python pandas dataframe

我有多个数据框,它们都应具有相同的列标题和尺寸。我试图从每个列中删除相同的列作为迭代过程,而不是逐个删除。

所以我有一个数据框列表:

groupDF = [df1, df2, df3]

然后我尝试删除列,只需删除1列:

for i in groupDF:
    i.columns = ['firstname', 'lastname', 'age', 'sex']
    i.drop(i.columns[2])

列部分的重命名可以自行完成。但是,当我尝试删除列时出现此错误:

 "labels ['age'] not contained in axis"

根据我的发现,如果未正确命名列,则会发生此错误。但是,如果我跑:

df1.columns

它显示了我期望的每个数据框的名称。它也让我感到困惑,因为我没有说明专栏的名称,只有位置。

当我尝试指定名称(通过用['age']替换2)而不是删除时,我得到了这个:

only integers, slices (`:`), ellipsis (`...`), numpy.newaxis (`None`) and
integer or boolean arrays are valid indices

也许我错过了一种更简单的方法。我感谢有人能给予的任何帮助。

2 个答案:

答案 0 :(得分:1)

pandas.DataFrame.drop的默认行为是axis=0。这意味着该方法将尝试删除第0轴中的标签,即DataFrame索引。如果要删除列,则需要指定要删除的轴为axis=1。在您的示例中,这将如下所示:

 i.drop(i.columns[2], axis=1, inplace=True)

答案 1 :(得分:1)

谢谢斯科特。对于任何绊倒这个的人来说,这是我的最终解决方案。

for i in groupDF:
    i.columns = ['firstname', 'lastname', 'age', 'sex']
    i.drop(i.columns[[2,3]], axis=1, inplace=True)