为 pandas 数据框中的序数创建虚拟变量

Creating dummy variables for ordinals in pandas dataframe

我正在尝试以 pandas 数据帧格式在 python 中创建虚拟变量。我有一个名为“重量组”的变量,我想像这样转换变量:

改造前:

    Weight_Group
0      1
1      5
2      4
3      2
4      2
5      3
6      1

改造后:

    WD_1  WD_2  WD_3  WD_4  WD_5
0      1    0     0     0     0
1      1    1     1     1     1
2      1    1     1     1     0 
3      1    1     0     0     0
4      1    1     0     0     0
5      1    1     1     0     0
6      1    0     0     0     0

我知道 pandas 有创建虚拟变量的 get_dummies() 函数,但它没有给我想要的功能,体重组 3 的人有WG_1、WG_2 和 WG_3 列。我有很多数据点,所以快速方法会很棒。如果有人对我如何实现这个有任何想法,我将不胜感激!

您可以调用 pd.get_dummies(),然后用 NaN 替换您的 0 计数并使用 bfill()(加上一些额外的显示清理):

pd.get_dummies(df['Weight_Group'], prefix='WD').replace(0,np.nan).bfill(axis=1).fillna(0).astype(int)

产量:

   WD_1  WD_2  WD_3  WD_4  WD_5
0     1     0     0     0     0
1     1     1     1     1     1
2     1     1     1     1     0
3     1     1     0     0     0
4     1     1     0     0     0
5     1     1     1     0     0
6     1     0     0     0     0