我有一个数据框df,df.head(3)看起来像...
number|Player
- - - - - - -
10 | Messi
7 | Ronaldo
14 | Henry
想让它看起来像这样...
Number|Messi|Ronaldo|Henry
--------------------------
10 |10 |0 |0
7 |0 |7 |0
14 |0 |0 |14
我尝试使用map,apply和get_dummies(),但后者使用的是1而不是值。
答案 0 :(得分:2)
您可以使用pivot_table
来做到这一点:
df = pd.DataFrame({
"number": [10, 7, 14],
"player": ["Messi", "Ronaldo", "Henry"]
})
df["value"] = df.number
df["number"] = df.number.astype(str)
df.pivot_table(values="value", columns="player", index="number").fillna(0)
答案 1 :(得分:0)
您可以使用str.get_dummies
:
df = df.set_index('number')
df_out = (df['Player'].str.get_dummies()*df.index).reset_index()
df_out
输出:
number Henry Messi Ronaldo
0 10 0 7 0
1 7 0 0 14
2 14 10 0 0
答案 2 :(得分:0)
result = df[["number"]].join(pd.get_dummies(df["player"]).mul(df["number"], axis=0))