首页 > 解决方案 > pd.get_dummies 仅将虚拟值名称保留为虚拟列名称

问题描述

我正在尝试做一个 pd.get_dummies 并将其连接回数据帧。它进展顺利,但我只想将虚拟值名称作为虚拟列名返回。我有一个非常大的 daraframe。有没有办法解决这个问题,而不是重命名列?任何支持表示赞赏!

数据框

Number   Fruit
  One    Apple
  Two    Orange
  Three  Banana
  Four   Lemon

代码

dum = pd.get_dummies(df, columns=['Fruit'])
df = pd.concat([df, dum], axis=1)
df

电流输出

Number   Fruit   Fruit_Apple   Fruit_Orange   Fruit_Banana   Fruit_Lemon
  One    Apple        1             0              0              0
  Two    Orange       0             1              0              0
  Three  Banana       0             0              1              0
  Four   Lemon        0             0              0              1

期望的输出

Number   Fruit      Apple         Orange         Banana         Lemon
  One    Apple        1             0              0              0
  Two    Orange       0             1              0              0
  Three  Banana       0             0              1              0
  Four   Lemon        0             0              0              1

标签: pythonconcat

解决方案


让我们在 pd.get_dummies 中使用一些参数来消除前缀和前缀分隔符:

dum = pd.get_dummies(df, columns=['Fruit'], prefix='', prefix_sep='')
pd.concat([df, dum], axis=1)

输出:

  Number   Fruit Number  Apple  Banana  Lemon  Orange
0    One   Apple    One      1       0      0       0
1    Two  Orange    Two      0       0      0       1
2  Three  Banana  Three      0       1      0       0
3   Four   Lemon   Four      0       0      1       0

推荐阅读