gpt4 book ai didi

python - pandas 获取带有列表的列的虚拟值

转载 作者:行者123 更新时间:2023-12-02 03:25:44 25 4
gpt4 key购买 nike

输入:-

empNo         name    

1234 [ AB, DE ]
5678 [ FG, IJ ]

命令:-

dataFrame = dataFrame.join(dataFrame.name.str.join('|').str.get_dummies().add_prefix('dummy_name_'))

上面的命令为“列名的每个字符”带来虚拟

输出:-

empNo         name              dummy_name_A        dummy_name_B     dummy_name_D     dummy_name_E  dummy_name_F    dummy_name_G    dummy_name_I    dummy_name_J

1234 [ AB, DE ] 1 1 1 1 0 0 0 0
5678 [ FG, IJ ] 0 0 0 0 1 1 1 1

预期:-

empNo         name              dummy_name_AB       dummy_name_DE    dummy_name_FG  dummy_name_IJ   

1234 [ AB, DE ] 1 1 0 0
5678 [ FG, IJ ] 0 0 1 1

最佳答案

我认为列表不是列表,所以我们使用ast将字符串类型列转换回列表

import ast

df.name=df.name.apply(ast.literal_eval)

然后使用 str get_dummies

s=df.name.apply(pd.Series).stack().str.get_dummies().sum(level=0).add_prefix('dummy_name_')
s
dummy_name_AB dummy_name_DE dummy_name_FG dummy_name_IJ
0 1 1 0 0
1 0 0 1 1

然后

pd.concat([df[['empNo']],s],axis=1)

数据输入

df.to_dict()
{'empNo': {0: 1234, 1: 5678}, 'name': {0: ['AB', 'DE'], 1: ['FG', 'IJ']}}

关于python - pandas 获取带有列表的列的虚拟值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53470831/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com