熊猫数据框分组依据为列表,在单元格数据中具有列表

时间:2018-06-26 22:58:46

标签: python pandas dataframe pandas-groupby

考虑此输入df

my_input_df = pd.DataFrame({
'export_services': [[1],[2,4,5],[4,6], [2,4,5],[1]], 
'seaport':['china','africa','europe', 'mexico','europe'], 
'price_of_fish':['100','200','250','125','75']})

如何对包含列表的列进行分组,并将其他列组合为列表?

my_output_df = pd.DataFrame({
'export_services': [[1],[2,4,5],[4,6]], 
'seaport':[['china','europe'],['africa','mexico'],'europe'], 
'price_of_fish':[['100','75'],'200',['250','125']]})

我尝试过

my_input_df.groupby('export_services').apply(list)

给出

  

TypeError:不可散列的类型:“列表”

有什么想法吗?

注意:如果my_output_df中所有分组的行都是列表,即使是单个条目,也可以。

1 个答案:

答案 0 :(得分:1)

首先,转换为 tuple ,可以对其进行哈希处理:

df.export_services = df.export_services.apply(tuple)

groupby agg

df.groupby('export_services').agg(list).reset_index()

  export_services           seaport price_of_fish
0            (1,)   [china, europe]     [100, 75]
1       (2, 4, 5)  [africa, mexico]    [200, 125]
2          (4, 6)          [europe]         [250]