python - 添加缺失的列

标签 python pandas numpy dataframe encoding

这个问题是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/

相关文章:

python - 如何为具有S形激活的简单神经网络进行反向传播?

python - Ctrl+C 后 Pycharm 控制台崩溃

python - xarray - 按特定日期范围对数据进行分组

python - 为什么 pandas df.diff(2) 与 df.diff().diff() 不同?

python - 提高到 1/3 得到复数

来自 CSV 数据的 Python 饼图

python - 如何修复 Django REST Framework 中的 UnicodeDecodeError?

python - pip install -U PySide 错误

python程序添加每一行的所有值

pandas - Matplotlib:如何使用 pandas plot api 在散点图中绘制一个空圆?