【问题标题】:Apply "list" function on multiple columns pandas在多列熊猫上应用“列表”功能
【发布时间】:2017-03-14 10:48:50
【问题描述】:

为了在 Pandas 中使用 groupby 将几行“连接”到 1 个列表,我可以这样做:

df = pd.DataFrame({'A': [1,1,2,2,2,2,3],'B':['a','b','c','d','e','f','g']})

df = df.groupby('A')['B'].apply(list)

我会得到:

A
-------------------
1          [a, b]
2    [c, d, e, f]
3             [g]

我想对 agg 做同样的事情:

f = {"B":[list]}
df = df.groupby('A').agg(f)

给出错误, 有什么想法吗?

谢谢,

【问题讨论】:

    标签: python list pandas apply


    【解决方案1】:

    您可以使用tolist - 输出为Series

    df = df.groupby('A')['B'].agg(lambda x: x.tolist())
    print (df)
    A
    1          [a, b]
    2    [c, d, e, f]
    3             [g]
    dtype: object
    

    或在dict 中定义列B - 输出为DataFrame

    df = df.groupby('A').agg({'B': lambda x: x.tolist()})
    print (df)
                  B
    A              
    1        [a, b]
    2  [c, d, e, f]
    3           [g]
    

    同样有效:

    df = df.groupby('A')['B'].agg(lambda x: list(x))
    print (df)
    A
    1          [a, b]
    2    [c, d, e, f]
    3             [g]
    dtype: object
    
    df = df.groupby('A').agg({'B': lambda x: list(x)})
    print (df)
                  B
    A              
    1        [a, b]
    2  [c, d, e, f]
    3           [g]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-02-16
      • 2018-08-29
      • 2021-05-10
      • 2018-12-07
      • 2022-10-20
      • 1970-01-01
      • 1970-01-01
      • 2021-08-17
      相关资源
      最近更新 更多