我有以下字典:
{'have.01':[':arg0',':arg1'], 'give.01':[':arg1',':arg2'], ':create.01':[':arg3', ':arg4']}
我需要生成以下文件:
have.01, 1, 1, 0, 0
give.01, 0, 1, 1, 0
create.01, 0, 0, 1, 1
如果:argX
存在,我就放1
。
我不知道如何编程。
答案 0 :(得分:1)
使用pandas get_dummies
pd.DataFrame(d).T.apply(','.join,1).str.get_dummies(sep=',')
Out[29]:
:arg0 :arg1 :arg2 :arg3 :arg4
:create.01 0 0 0 1 1
give.01 0 1 1 0 0
have.01 1 1 0 0 0
或者我们使用(stack
或melt
)+(crosstab
或pivot
)
df=pd.DataFrame(d).stack()
df
Out[33]:
0 :create.01 :arg3
give.01 :arg1
have.01 :arg0
1 :create.01 :arg4
give.01 :arg2
have.01 :arg1
dtype: object
pd.crosstab(df.index.get_level_values(1),df)
Out[34]:
col_0 :arg0 :arg1 :arg2 :arg3 :arg4
row_0
:create.01 0 0 0 1 1
give.01 0 1 1 0 0
have.01 1 1 0 0 0