我有以下 pandas 数据框:
name state postcode
coles vic 2501
woolworth nsw 3409
big w act 3201
target vic 1089
我需要将这个集合转换为如下所示,我通常手动执行,但是这次我在状态中有很多值,我的目标是将它们放在包含 yes 和 no 的列中。在 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
最佳答案
使用get_dummies
与 replace
对于 N
和 Y
:
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
关于python - 为行中的每个值创建一个新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48165710/