Python:如何按列中的列表进行分组

时间:2019-02-28 15:37:25

标签: python pandas

我正在处理以下数据框:

   list          orders
[item1, item2]     A
[item10, item1]    A
[item10, item15]   B

当我按分组排序时,列表列会完全消失。有没有一种使用列表进行分组的方法。我的预期结果是:

      list:                        orders:
[item1, item2, item10, item1]        A
[item10, item15]                     B

1 个答案:

答案 0 :(得分:2)

groupby与自定义lambda函数一起用于拼合嵌套列表:

from  itertools import chain
f = lambda x: list(chain.from_iterable(x))

或者:

f = lambda x: [z for y in x for z in y]

或者:

f = lambda x: np.concatenate(x.values)

df = df.groupby('orders')['list'].apply(f).reset_index()
print (df)
  orders                           list
0      A  [item1, item2, item10, item1]
1      B               [item10, item15]

如果性能不重要(大数据速度较慢):

df = df.groupby('orders')['list'].sum().reset_index()