假设我有一个数据帧
id 0 1 2
001 0 0 0
003 0 0 0
007 0 0 0
和{id:column}的数据框,例如
id col
001 2
007 0
如何把value放到dataframe中变成
id 0 1 2
001 0 0 1
003 0 0 0
007 1 0 0
我认为使用apply/applymap与列表理解是一种方法,但仍然不明白。
您可以crosstab
和update
:
df = pd.DataFrame({'id': {0: 1, 1: 3, 2: 7}, 0: {0: 0, 1: 0, 2: 0}, 1: {0: 0, 1: 0, 2: 0}, 2: {0: 0, 1: 0, 2: 0}})
df2 = pd.DataFrame({'id': {0: 1, 1: 7}, 'col': {0: 2, 1: 0}})
df = df.set_index("id")
df.update(pd.crosstab(df2["id"], df2["col"]))
print (df.reset_index())
id 0 1 2
0 1 0.0 0 1.0
1 3 0.0 0 0.0
2 7 1.0 0 0.0