2017-07-19 81 views
0

我试图改变类似于下面的一个数据帧列:的Python:数据帧转换为元组

index apple 
1  [(red,3),(green,2)] 
1  [(red,3)] 
1  [(yellow,9),(red,3)] 
1  [(green,2),(yellow,9)] 
1  [(green,2),(yellow,9), (pink,50)] 
2  [(yellow,14),(red,1)] 
2  [(green,5)] 

到这一点:

index apple_red apple_green apple_yellow apple_pink 
1  3   2   9   50 
2  1   5   14   0 

注意,元组是唯一每个索引中原创表 任何想法如何做到这一点?

感谢

+1

SO没有代码编写的服务。请发布您迄今为止尝试的内容。你遇到什么问题? –

回答

1

您可以使用:


df1 = pd.DataFrame([dict(x) for x in df['apple']], index=df.index) \ 
     .stack() \ 
     .astype(int) \ 
     .reset_index(name='val') \ 
     .drop_duplicates(['level_1','val']) \ 
     .set_index(['index', 'level_1'])['val'] \ 
     .unstack(fill_value=0) \ 
     .add_prefix('apple_') \ 
     .rename_axis(None) \ 
     .rename_axis(None, axis=1) \ 
     .reset_index() 
print (df1) 
    index apple_green apple_pink apple_red apple_yellow 
0  1   2   50   3    9 
1  2   5   0   1   14 
+0

这太神奇了,非常感谢! – user2475110

+0

很高兴可以帮忙,这是有趣的问题! – jezrael