将两个列表合并在 Pandas 的 groupby 和 apply 中

3

I have a dataframe such as:

    make     model     year range
0   Audi     A3        [1991, 1992, 1993]
1   Audi     A3        [1997, 1998]

我需要:

    make     model     year range
0   Audi     A3        [1991, 1992, 1993, 1997, 1998]

我已经尝试过

df = df['year range'].groupby([df.make, df.model]).apply(list).reset_index()

然而,最终我得到的年份范围是一个列表的列表,而不是一个单一的列表。这似乎很简单,但我无法弄清楚!

2
尝试使用以下代码:df.groupby('make', 'model')['year range'].sum()df.groupby('make', 'model')['year range'].apply(np.concatenate) - piRSquared
1个回答

9

连接列表是通过加法操作完成的,所以您只需要对相应的列应用sum函数即可:

In [24]: df
Out[24]:
   make model                year
0  Audi    A3  [1991, 1992, 1993]
1  Audi    A3        [1997, 1998]

In [25]: df.groupby([df.make, df.model]).year.apply(sum)
Out[25]:
make  model
Audi  A3       [1991, 1992, 1993, 1997, 1998]
Name: year, dtype: object

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接