numpy 基于pandas中一列中的重复项对另一列中的数据进行分组

bwntbbo3  于 2023-06-23  发布在  其他
关注(0)|答案(1)|浏览(123)

我有一个100196行x 8列的数据框。

我期望得到类似于下面所示的输出

第2列至第5列具有相同的数据,因为ID相同。我只是想有所有的设计代码在一个单元格作为新线。我理解我们可以使用groupby和agg函数,但我只能添加一列。
有谁能建议一下,如何解决这个问题?

ki0zmccv

ki0zmccv1#

我根据你的例子创建了一个模拟数据集:

import pandas as pd
import numpy as np

df = pd.DataFrame({
    "ID": ["1", "1", "2", "3", "3", "3"],
    "Data 1": ["data11", "data11", "data12", "data13", "data13", "data13"],
    "Data 2": ["data21", "data21", "data22", "data23", "data23", "data23"],
    "Design Code": ["a", "b", "c", "d", "e", "f"]
})

您可以对groupby中的不同列应用不同的聚合,以实现预期的结果,例如:

df \
    .groupby("ID", as_index=False) \
    .agg({
        "Data 1": min,
        "Data 2": min,
        "Design Code": lambda x: "\n".join(np.unique(x)),
    })

输出:

ID Data 1  Data 2  Design Code
0        1  data11  data21  a\nb
1        2  data12  data22  c
2        3  data13  data23  d\ne\nf

至于Design Code的换行显示,如果你使用的是jupyter notebook,可以参考https://stackoverflow.com/a/46326725/22052558

相关问题