我有多个数据框,它们都应具有相同的列标题和尺寸。我试图从每个列中删除相同的列作为迭代过程,而不是逐个删除。
所以我有一个数据框列表:
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
也许我错过了一种更简单的方法。我感谢有人能给予的任何帮助。
答案 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)