如何填充列依赖找到的值?

时间:2017-04-14 20:08:42

标签: pandas

我有一个pandas DataFrame,其中包含与月份相关的客户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个语句?

1 个答案:

答案 0 :(得分:2)

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