2016-12-24 81 views
3

我有这样如何将多个单元格合并到一个单一的文本сell

import pandas as pd 
df = pd.DataFrame({'item': [1, 1,2,2], 
        'user': [1,2,2,1], 
        'appraisal': [4,2,1,3], 
        'feedback' : ['good', 'bad', 'bad', 'well'] 
        }) 
names = ['item', 'user', 'appraisal', 'feedback' ] 
df = df[names] 
df 

一个数据帧我希望得到一个数据帧如下

item appraisal feedback 
0 1  3  good bad 
1 2  2  bad well 

其中“项目”是“项目”,从DF,“评价”是平均df.appraisal的项目和“反馈”被组合从df.feedback的项目 电池我可以得到两个variales

df1 = df.groupby('item')['appraisal'].mean() 

但如何结合文本单元格?我可以将pivot_table项目/用户和“feedback”作为值,然后添加单元格user1 + user2 ..... 但实际数据集有许多独特的值,我不认为这是一个最佳决策 thanx帮助

回答

3

您可以使用GroupBy.agg()方法:

In [4]: df.groupby('item').agg({'appraisal':'mean','feedback':' '.join}) 
Out[4]: 
     appraisal feedback 
item 
1    3 good bad 
2    2 bad well 

,或者如果你需要一个 “平” 的东风,用as_index=False@John Galt has recommended

In [5]: df.groupby('item', as_index=False).agg({'appraisal':'mean','feedback':' '.join}) 
Out[5]: 
    item appraisal feedback 
0  1   3 good bad 
1  2   2 bad well 
+2

整洁。并且,'groupby(..,as_index = False)'用于像OP那样的平面数据帧。 – Zero

+1

@JohnGalt,谢谢!我已将它添加到答案 – MaxU

+0

不错的添加!) – Edward

相关问题