import pandas as pd
df1 = pd.DataFrame( {"name" : ["name1", "name1", "name2", "name3", "name3" , "name3"], "item" : ["item1", "item2", "item3", "item2", "item3", "item1"] } )
df2 = df1.groupby('name')['item']


在这个groupby对象中,我具有每个名称的所有项目。我可以通过以下方式将其可视化:

print(df2.apply(list))


并获得:

name
name1           [item1, item2]
name2                  [item3]
name3    [item2, item3, item1]


但是,我想实现的目标是这样的:

name     itemA    itemB    itemC
name1    item1    item2    NaN
name2    item3    NaN      NaN
name3    item2    item3    item1


任何帮助深表感谢。

最佳答案

在df2末尾添加apply pd.Series

df2.apply(list).apply(pd.Series)
Out[300]:
           0      1      2
name
name1  item1  item2    NaN
name2  item3    NaN    NaN
name3  item2  item3  item1

关于python - Pandas groupby对象到数据框,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48750236/

10-12 19:49