道歉,因为我对这一切都不熟悉。
此刻我正在和熊猫玩耍。我想在列表中存储的两个数据帧中删除一个特定列。这就是我写的。
combine = [train, test]
for dataset in combine:
dataset = dataset.drop('Id', axis=1)
然而,这不起作用。如果我明确地这样做,例如train = train.drop('Id', axis=1)
,这可以正常工作。
我很欣赏在这种情况下,无论哪种方式都是两行,但是有一些方法可以使用数据帧列表从两个列中删除列吗?
答案 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)