【问题标题】:Display all group by columns按列显示所有分组
【发布时间】:2018-10-19 12:16:37
【问题描述】:
'''
groupby row, concat list
'''
d = {'col1': [33, 33, 33, 34, 34, 34], 'col2': ["hello", "hello1", "hello2", "hello3", "hello4", "hello5"],
     'col3': [1, 2, 3, 4, 5, 6]}
df = pd.DataFrame(data=d)

dfQ = df.groupby('col1')['col2'].apply(list).reset_index()
print(dfQ)

上面的代码给了我col1col2,如何用col1col2显示col3的结果?

【问题讨论】:

    标签: python-3.x pandas


    【解决方案1】:

    IIUC 你可以使用groupby.agg

    df1 = df.groupby('col1', as_index=False).agg(list)
    
    print (df1)
    
       col1                  col2           col3
    0   33  [hello, hello1, hello2]     [1, 2, 3]
    1   34  [hello3, hello4, hello5]    [4, 5, 6]
    

    【讨论】:

    • 谢谢,在我的方法中使用agg 和使用apply 有什么不同?
    • @william007 agg 聚合每个组的每个列,因此您的函数 (list) 将应用于每个组的每个列。并且 agg 还提供了为每列应用不同功能的灵活性。其中apply为每个组应用该功能。你可以阅读groupby docs 他们真的很有帮助。
    【解决方案2】:

    您可以使用 agglambda 函数来列出您的两个列。

    dfQ = df.groupby('col1').agg(lambda x: list(x)).reset_index()
    

    【讨论】:

    • 谢谢,在我的方法中使用agg 和使用apply 有什么不同?
    猜你喜欢
    • 1970-01-01
    • 2016-01-28
    • 2010-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多