Python 将dataframe groupby放入列表,并将列表放入单元格数据

Python 将dataframe groupby放入列表,并将列表放入单元格数据,python,pandas,dataframe,pandas-groupby,Python,Pandas,Dataframe,Pandas Groupby,考虑这个输入 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.DataF

考虑这个输入

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中的所有分组行都是列表,即使是单个条目也可以。

首先,转换为元组,可以散列:

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]

当我这样做时,apply(tuple)PyCharm不再显示df。我可以检查df值,并将元组应用于列。接下来,对于df.groupby,我得到一条消息indexer:tuple index超出范围。编辑:我只在实际数据上得到这个索引器,而不是在示例数据上。在示例数据列seaport和price_of_fish为NaN。您的
export_services
列中是否有未列出的值?这很奇怪。在您的示例数据上运行此命令,我将在我的答案中获得输出。我不知道你为什么会得到
NaN
是的,3.6.5,Pandas 0.23.0这是Pandas版本的问题。pd.\uuuuu版本为0.21.0,0.23解决了这个问题。非常感谢。