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
添加回答
舉報