如何将虚拟变量从1更改为值?

时间:2019-06-05 21:34:27

标签: python pandas

我有一个数据框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而不是值。

3 个答案:

答案 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)

enter image description here

答案 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))