在多个列上应用 "list" 函数 pandas

Apply "list" function on multiple columns pandas

为了在 Pandas 中使用 groupby "concatenate" 几行到 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)

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

谢谢,

您可以使用 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]