gpt4 book ai didi

Python:使用 False/True 通过支点函数连接/合并两个 panda 数据框

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

我有两个数据框:

import pandas as pd
df1 = pd.DataFrame({'id': [1, 2,3],'param1': ['foo','bar','fu'],'param2': ['fo', 'ba','bar']})

id param1 param2
0 1 foo fo
1 2 bar ba
2 3 fu bar

df2 = pd.DataFrame({'id': [1, 1,1,2,2,3],'item': ['X','Y','Z','X','Z','Y'],})

id item
0 1 X
1 1 Y
2 1 Z
3 2 X
4 2 Z
5 3 Y

我喜欢使用键 id 连接/合并两个框架。不过,我希望扩展框架,以便每个唯一的项目都成为自己的列,并且每行都填充 0 或 1。我猜它是一种带有枢轴的映射,也许吧?最终表格应如下所示:

   id param1 param2  X  Y  Z
0 1 foo fo 1 1 1
1 2 bar ba 1 0 1
2 3 fu bar 0 1 0

谢谢!

最佳答案

您可以使用 join groupby 和聚合 size ,然后值将转换为 bool -0False1,2...True 。最后的值转换为 int -01 :

print (df1.join(df2.groupby(['id', 'item'])
.size()
.unstack(fill_value=0)
.astype(bool)
.astype(int), on='id'))

id param1 param2 X Y Z
0 1 foo fo 1 1 1
1 2 bar ba 1 0 1
2 3 fu bar 0 1 0

另一个解决方案 crosstab :

print (df1.join(pd.crosstab(df2['id'], df2['item']).astype(bool).astype(int), on='id'))
id param1 param2 X Y Z
0 1 foo fo 1 1 1
1 2 bar ba 1 0 1
2 3 fu bar 0 1 0

关于Python:使用 False/True 通过支点函数连接/合并两个 panda 数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44541725/

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