3 回答

TA贡献1809条经验 获得超8个赞
pandas.factorize 和数组切片分配
j, h = pd.factorize(df.Hour)
i = np.arange(len(df))
b = np.zeros((len(df), len(h)), dtype=h.dtype)
b[i, j] = 1
df.join(pd.DataFrame(b, df.index, h).add_prefix('HE'))
Date Hour HE1 HE2 HE3 HE4
0 2005-01-01 1 1 0 0 0
1 2005-01-01 2 0 1 0 0
2 2005-01-01 3 0 0 1 0
3 2005-01-01 4 0 0 0 1

TA贡献1829条经验 获得超4个赞
即使它与@jezrael 的答案非常相似,但这也更好,(它只是使用.str访问器get_dummies:
print(df.join(df['Hour'].astype(str).str.get_dummies().add_prefix('HE')))
输出:
Date Hour HE1 HE2 HE3 HE4
0 2005-01-01 1 1 0 0 0
1 2005-01-01 2 0 1 0 0
2 2005-01-01 3 0 0 1 0
3 2005-01-01 4 0 0 0 1
添加回答
举报