假设我有 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 - 比较多个数据帧添加新列填充二进制值以进行匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60218012/