我有以下pandas数据框:
name state postcode
coles vic 2501
woolworth nsw 3409
big w act 3201
target vic 1089
我需要将此设置转换为这样,我通常会手动执行,但这次我在状态中有很多值,而我的目标是将它们放在列中,是和否。在Stata我会循环,但在Python中我有点迷失。
name state postcode VIC NSW ACT NT
coles VIC 2501 Y N N N
woolworth NSW 3409 N Y N N
big w ACT 3201 N N Y N
target NT 1089 N N N Y
答案 0 :(得分:2)
get_dummies
与N
和Y
使用replace
:
df = df.join(pd.get_dummies(df['state']).replace({0:'N', 1:'Y'}))
print (df)
name state postcode act nsw vic
0 coles vic 2501 N N Y
1 woolworth nsw 3409 N Y N
2 big w act 3201 Y N N
3 target vic 1089 N N T
或转换为bool
:
df = df.join(pd.get_dummies(df['state']).astype(bool))
print (df)
name state postcode act nsw vic
0 coles vic 2501 False False True
1 woolworth nsw 3409 False True False
2 big w act 3201 True False False
3 target vic 1089 False False True
或者,如果可能0
和1
值:
df = df.join(pd.get_dummies(df['state']))
print (df)
name state postcode act nsw vic
0 coles vic 2501 0 0 1
1 woolworth nsw 3409 0 1 0
2 big w act 3201 1 0 0
3 target vic 1089 0 0 1