Jen*_*nny 2 python dataframe pandas
输入:-
empNo name
1234 [ AB, DE ]
5678 [ FG, IJ ]
Run Code Online (Sandbox Code Playgroud)
命令:-
dataFrame = dataFrame.join(dataFrame.name.str.join('|').str.get_dummies().add_prefix('dummy_name_'))
Run Code Online (Sandbox Code Playgroud)
上面的命令为列名的每个字符带来了虚拟
输出:-
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
Run Code Online (Sandbox Code Playgroud)
预期的:-
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
Run Code Online (Sandbox Code Playgroud)
我认为列表不是列表,所以我们使用 ast 将字符串类型列转换回列表
import ast
df.name=df.name.apply(ast.literal_eval)
Run Code Online (Sandbox Code Playgroud)
然后使用 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
Run Code Online (Sandbox Code Playgroud)
然后
pd.concat([df[['empNo']],s],axis=1)
Run Code Online (Sandbox Code Playgroud)
数据输入
df.to_dict()
{'empNo': {0: 1234, 1: 5678}, 'name': {0: ['AB', 'DE'], 1: ['FG', 'IJ']}}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
865 次 |
| 最近记录: |