为中的每个值创建新列

2024-10-04 11:33:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下数据框:

name        state   postcode
coles       vic      2501
woolworth   nsw      3409
big w       act      3201
target      vic      1089

我需要将这个集合转换成这样,我通常手动执行,但是这次我在状态中有很多值,我的目标是将它们放在带有yes和no的列中

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

Tags: 数据nametargetactstatepostcodenswbig
1条回答
网友
1楼 · 发布于 2024-10-04 11:33:55

^{}^{}表示NY

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

或者如果可能01值:

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

相关问题 更多 >