gpt4 book ai didi

python - Pandas:使用另一个表的 “dummy variable” 创建一个表

转载 作者:行者123 更新时间:2023-12-01 03:02:21 25 4
gpt4 key购买 nike

假设我有这个数据框

DataFrame A(产品)

Cod | Product   | Cost | Date
-------------------------------
18 | Product01 | 3.4 | 21/04
22 | Product02 | 7.2 | 12/08
33 | Product03 | 8.4 | 17/01
55 | Product04 | 0.6 | 13/07
67 | Product05 | 1.1 | 09/09


数据帧 B(操作)
id | codoper | CodProd  | valor
-------------------------------
1 | 00001 | 55 | 45000
2 | 00001 | 18 | 45000
3 | 00002 | 33 | 53000
1 | 00001 | 55 | 45000


这个想法是从“Dataframe B”中获取带有列产品的“dataframe C”:

数据帧 C 结果
id | codoper | Product_18| Product_22| Product_33| Product_55| Product_67 |valor
----------------------------------------------------------------------------------
1 | 00001 | 1 | 0 | 0 | 1 | 0 |45000
2 | 00002 | 0 | 0 | 1 | 0 | 0 |53000

到目前为止,我只能从“DataFrame B”中做到这一点:
pd.get_dummies(df, columns=['CodProd']).groupby(['codoper'], as_index=False).min()

注意:我在操作的数据帧中没有来自数据帧 A 的所有产品

谢谢

最佳答案

您需要组合来自 Products 的假人来自 Operations 的假人.首先使用前缀定义输出列:

columns = ['id', 'codoper'] + [f"Product_{cod}" for cod in A['Cod'].unique()] + ['valor']

然后,像上面一样使用 get dummies,但在定义列时使用相同的前缀。按完全共线的所有列分组,即 id , codoper , 和 valor .如果这些不是完全共线的,那么您需要决定如何将它们聚合到 codoper 的水平。 .最后,使用您之前定义的输出列重新索引,用零填充缺失值。

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

关于python - Pandas:使用另一个表的 “dummy variable” 创建一个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60290110/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com