2 回答
TA贡献1772条经验 获得超5个赞
您需要将 中的假人与 中的假人组合在一起。首先使用前缀定义输出列:ProductsOperations
columns = ['id', 'codoper'] + [f"Product_{cod}" for cod in A['Cod'].unique()] + ['valor']
然后,像上面所做的那样使用get假人,但使用相同的前缀来定义列。按所有完全共线的列分组,即 、 和 。如果这些不是完全共线的,那么您需要决定如何将它们聚合到 .最后,使用之前定义的输出列重新编制索引,用零填充缺失值。idcodopervalorcodoper
pd.get_dummies(B, columns=['CodProd'], prefix='Product').groupby(['id', 'codoper', 'valor'], as_index=False).sum().reindex(columns=columns, fill_value=0)
id codoper Product_18 Product_22 Product_33 Product_55 Product_67 valor
0 1 00001 0 0 0 2 0 45000
1 2 00001 1 0 0 0 0 45000
2 3 00002 0 0 1 0 0 53000
TA贡献1846条经验 获得超7个赞
这是一些调整的组合:mergepivot_table
(Products.merge(Operations,
left_on='Cod',
right_on='CodProd',
how='left')
.pivot_table(index=['codoper','valor'],
values='Product',
columns='Cod',
fill_value=0,
aggfunc='any')
.reindex(Products.Cod.unique(),
fill_value=False,
axis=1)
.astype(int)
.add_prefix('Product_')
.reset_index()
)
输出:
Cod codoper valor Product_18 Product_22 Product_33 Product_55 \
0 00001 45000.0 1 0 0 1
1 00002 53000.0 0 0 1 0
Cod Product_67
0 0
1 0
添加回答
举报