从包含重复数据的行在列中创建数组

2024-10-08 19:23:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个非常大的数据集(大约600000行)。我希望在前四列相同的情况下,通过在最后一列中创建数组来减少数据行数

      make  year      model          engine            part
alfa romeo  1960  giulietta         1.3l l4             A
alfa romeo  1958  giulietta         1.3l l4             B
alfa romeo  1958  giulietta         1.3l l4             A
alfa romeo  1957  giulietta         1.3l l4             B
alfa romeo  1957  giulietta         1.3l l4             A
alfa romeo  1956  giulietta         1.3l l4             B
alfa romeo  1956  giulietta         1.3l l4             A
alfa romeo  1954  giulietta         1.3l l4             B
alfa romeo  1954  giulietta         1.3l l4             A
alfa romeo  1955  giulietta         1.3l l4             B
alfa romeo  1955  giulietta         1.3l l4             A

所需输出:

      make  year      model          engine            part
alfa romeo  1960  giulietta         1.3l l4            [A]
alfa romeo  1958  giulietta         1.3l l4            [A,B]
alfa romeo  1957  giulietta         1.3l l4            [A,B]
alfa romeo  1956  giulietta         1.3l l4            [A,B]
alfa romeo  1955  giulietta         1.3l l4            [A,B]
alfa romeo  1954  giulietta         1.3l l4            [A,B]

我想我可以使用dataframe.groupby来获得我想要的输出,但是我无法通过多次尝试来实现。我一直收到以下输出的一种形式<pandas.core.groupby.generic.DataFrameGroupBy object at xxx>

任何帮助都将不胜感激


Tags: 数据dataframemakemodel情况数组yearengine
2条回答

将它们分组并列出它们的内容

df.groupby(['make', 'year', 'model', 'engine']).agg(list).reset_index()


make    year    model   engine  part
0   alfa romeo  1954    giulietta   1.3l l4 [B, A]
1   alfa romeo  1955    giulietta   1.3l l4 [B, A]
2   alfa romeo  1956    giulietta   1.3l l4 [B, A]
3   alfa romeo  1957    giulietta   1.3l l4 [B, A]
4   alfa romeo  1958    giulietta   1.3l l4 [B, A]
5   alfa romeo  1960    giulietta   1.3l l4 [A]

您可以分组,然后制作零件列表

df = df.groupby(['make', 'year', 'model', 'engine'])['part'].apply(','.join).reset_index()

样本输出:

         make  year      model   engine part
0  alfa romeo  1957  giulietta  1.3l l4  B,A
1  alfa romeo  1958  giulietta  1.3l l4  B,A
2  alfa romeo  1960  giulietta  1.3l l4    A

相关问题 更多 >

    热门问题