Python Pandas 对象数据类型的groupby赋值

Python Pandas groupby assignment of object dtypes

这个pythonDataFrame

df = pd.DataFrame({'ID': [3553102778, 3553102958, 3553103948, 3553103948, 3553104038, 3553104038, 3553104128, 3553104218, 3557580098], 'Based on': ['CTR', 'CTR', 'Conv rate', 'CTR', 'Conv rate', 'CTR', 'CTR', 'CTR', 'CTR']}, columns=['ID', 'Based on'])

生成如下所示的 DataFrame:

           ID   Based on
0  3553102778        CTR
1  3553102958        CTR
2  3553103948  Conv rate
3  3553103948        CTR
4  3553104038  Conv rate
5  3553104038        CTR
6  3553104128        CTR
7  3553104218        CTR
8  3557580098        CTR

请注意 ID 35531039483553104038 如何同时具有 Conv rateCTR

如何按 ID 分组并同时分配 Based on Conv rate, CTR 的值来获得它?

           ID        Based on
0  3553102778             CTR
1  3553102958             CTR
2  3553103948  Conv rate, CTR
4  3553104038  Conv rate, CTR
6  3553104128             CTR
7  3553104218             CTR
8  3557580098             CTR

我认为这是某种 groupby 和单行赋值,但我不知道如何检测行外是否存在其他 ID 等于当前行的 ID.

也许 groupbyapply 结合使用?我还不熟悉apply

您可以对组使用应用,这允许您转换组。这意味着 returns 中的函数针对具有相同 ID 的每组条目。

group apply

g = df.groupby("ID") s = g["Based on"].apply(lambda group: group.values) s.to_frame()

s 是一个系列,您可能想转换为数据框