考虑此输入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中所有分组的行都是列表,即使是单个条目,也可以。
最佳答案
首先,转换为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]