Python 如何将虚拟变量从1更改为值?
我有一个数据帧df,df.head(3)看起来像Python 如何将虚拟变量从1更改为值?,python,pandas,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 我尝试过使用
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,而是1。您可以使用
pivot_table
:
df=pd.DataFrame({
“数字”:[10,7,14],
“球员”:[“梅西”、“罗纳尔多”、“亨利”]
})
df[“值”]=df.number
df[“number”]=df.number.astype(str)
数据透视表(values=“value”、columns=“player”、index=“number”).fillna(0)
您可以使用
str.get\u假人
:
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
只是为了澄清一下,您实际上是在尝试一个热编码吗?我知道你被标记为机器学习,为什么我要问。是的,试着做一个热编码
result = df[["number"]].join(pd.get_dummies(df["player"]).mul(df["number"], axis=0))