Python 从多个数据帧中删除多个列

Python 从多个数据帧中删除多个列,python,pandas,dataframe,Python,Pandas,Dataframe,我有多个数据帧,它们都应该具有相同的列标题和维度。我试图作为一个迭代过程从每个列中删除相同的列,而不是一个接一个地删除 所以我有一个数据帧列表: groupDF = [df1, df2, df3] 然后我尝试了删除列,只是从删除1列开始: for i in groupDF: i.columns = ['firstname', 'lastname', 'age', 'sex'] i.drop(i.columns[2]) “列”部分的重命名本身可以正常工作。但是,当我尝试删除列时

我有多个数据帧,它们都应该具有相同的列标题和维度。我试图作为一个迭代过程从每个列中删除相同的列,而不是一个接一个地删除

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

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

也许我错过了一个更简单的方法。我非常感谢有人能提供的任何帮助。

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

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

谢谢你,斯科特。对于任何遇到这个问题的人来说,这是我的最终解决方案

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

那太傻了,谢谢你。现在我只需要让它在多个列上工作。使用[2,3]会产生不同的错误为什么不试试
i.drop(i.columns[2:4],axis=1,inplace=True)