gpt4 book ai didi

python - 比较多个 DataFrame 使用二进制值添加新列填充以进行匹配

转载 作者:行者123 更新时间:2023-12-04 10:35:05 31 4
gpt4 key购买 nike

假设我有 2 个数据框。一个具有所有实例的合并数据框,另一个只有列 id 的唯一实例。

df1 看起来像这样:

|    id    |    category_name
| 459291 | c1
| 349532 | c1
| 459291 | c2
| 719300 | c1
| 349532 | c3
| 459291 | c4
| 649202 | c2
| 459291 | c5

df2 看起来像这样:
|    id    |    category_name
| 459291 | c1
| 349532 | c1
| 719300 | c1
| 649202 | c2

我想要做的是在 df2 上为“category_name”列中的每个值创建新列,如果“id”中的唯一值与“category_name”匹配,则输出 1 或 0。然后我会删除“category_name”列。所以,我正在寻找的预期输出将是这样的
|    id    |    c1                |     c2          |     c3        |  c4 |
| 459291 | 1 | 1 | 1 | 1 |
| 349532 | 1 | 1 | 0 | 0 |
| 719300 | 1 | 0 | 0 | 0 |
| 649202 | 0 | 1 | 0 | 0 |

我觉得这也可以仅使用合并的数据框来完成,但我不确定如何在保留每个唯一 ID 的新列值的同时删除重复项。任何帮助是极大的赞赏!

最佳答案

这是一种使用 pivot_table() 的方法出于某种原因,我无法避免不必添加 aux柱子:

import pandas as pd
df = pd.DataFrame({'id':[459291,349532,459291,719300,349532,459291,649202,459291],
'playlist':['new','new','top','new','top','old','top','workout']})
df['aux'] = 1
new_df = pd.pivot_table(df,index='id',columns=['playlist'],aggfunc='count',values='aux').fillna(0).astype(int)
print(new_df)

输出:
playlist  new  old  top  workout
id
349532 1 0 1 0
459291 1 1 1 1
649202 0 0 1 0
719300 1 0 0 0

关于python - 比较多个 DataFrame 使用二进制值添加新列填充以进行匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60218012/

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