这个问题是Create multiple columns from a single column的延续. 假设现在我们有 2 个数据框,训练和测试,我怎样才能为每个添加缺失的列? 问候,
编辑: 训练数据框:
Products
1 A;B
2 A
3 B;A;C
成为:
Has_A Has_B Has_C
1 1 1 0
2 1 0 0
3 1 1 1
测试数据框:
Products
1 A;B
2 A
3 D;A;B
成为:
Has_A Has_B Has_D
1 1 1 0
2 1 0 0
3 1 1 1
训练有“Has_C”,测试有“Has_D”。
我想将 Has_C 列添加到测试中,将 Has_D 列添加到火车中并用 0 填充它们。
最佳答案
你可以使用DataFrame.assign()方法:
all_cols = train.columns.union(test.columns)
train = train.assign(**{col:0 for col in all_cols.difference(train.columns).tolist()})
test = test.assign(**{col:0 for col in all_cols.difference(test.columns).tolist()})
演示:
In [310]: train.assign(**{col:0 for col in all_cols.difference(train.columns).tolist()})
Out[310]:
Has_A Has_B Has_C Has_D
1 1 1 0 0
2 1 0 0 0
3 1 1 1 0
In [311]: test.assign(**{col:0 for col in all_cols.difference(test.columns).tolist()})
Out[311]:
Has_A Has_B Has_D Has_C
1 1 1 0 0
2 1 0 0 0
3 1 1 1 0
关于python - 添加缺失的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43657366/