列的填充方式取决于找到的值



我有一个熊猫数据帧,其中包含客户 ID 和与月份相关的列 (1,2,3....(我有一列,上面写着自上次购买以来的月数我正在使用以下内容来填充相关的月份列

dt.loc[dt.month == 1, '1'] = 1
dt.loc[dt.month == 2, '2'] = 1
dt.loc[dt.month == 3, '3'] = 1

如何以更好的方式填充列以避免创建 12 个语句?

pd.get_dummies

pd.get_dummies(dt.month)

考虑数据帧dt

dt = pd.DataFrame(dict(
        month=np.random.randint(1, 13, (10)),
        a=range(10)
    ))
   a  month
0  0      8
1  1      3
2  2      8
3  3     11
4  4      3
5  5      4
6  6      1
7  7      5
8  8      3
9  9     11

添加如下所示的列

dt.join(pd.get_dummies(dt.month))
   a  month  1  3  4  5  8  11
0  0      8  0  0  0  0  1   0
1  1      3  0  1  0  0  0   0
2  2      8  0  0  0  0  1   0
3  3     11  0  0  0  0  0   1
4  4      3  0  1  0  0  0   0
5  5      4  0  0  1  0  0   0
6  6      1  1  0  0  0  0   0
7  7      5  0  0  0  1  0   0
8  8      3  0  1  0  0  0   0
9  9     11  0  0  0  0  0   1

如果您希望列名是字符串

dt.join(pd.get_dummies(dt.month).rename(columns='month {}'.format))
   a  month  month 1  month 3  month 4  month 5  month 8  month 11
0  0      8        0        0        0        0        1         0
1  1      3        0        1        0        0        0         0
2  2      8        0        0        0        0        1         0
3  3     11        0        0        0        0        0         1
4  4      3        0        1        0        0        0         0
5  5      4        0        0        1        0        0         0
6  6      1        1        0        0        0        0         0
7  7      5        0        0        0        1        0         0
8  8      3        0        1        0        0        0         0
9  9     11        0        0        0        0        0         1

最新更新