如何从列表中存储的多个数据框中删除列?

时间:2017-09-27 14:57:48

标签: python pandas

道歉,因为我对这一切都不熟悉。

此刻我正在和熊猫玩耍。我想在列表中存储的两个数据帧中删除一个特定列。这就是我写的。

combine = [train, test]

for dataset in combine:
    dataset = dataset.drop('Id', axis=1)

然而,这不起作用。如果我明确地这样做,例如train = train.drop('Id', axis=1),这可以正常工作。

我很欣赏在这种情况下,无论哪种方式都是两行,但是有一些方法可以使用数据帧列表从两个列中删除列吗?

2 个答案:

答案 0 :(得分:2)

您的解决方案无效的原因是dataset是指向列表combine中的项目的名称。您有正确的想法将其重新分配给dataset = dataset.drop('Id', axis=1),但您所做的只是覆盖了名称dataset,并没有在列表combine中真正放置新的数据框

选项1

创建新列表

combine = [d.drop('Id', axis=1) for d in combine]

选项2
或者使用inplace=True

更改每个数据框
for d in combine:
    d.drop('Id', axis=1, inplace=True)

答案 1 :(得分:1)

或者

combine = [df1, df2]
for i in range(len(combine)):
    combine[i]=combine[i].drop('Id', axis=1)