Python Pandas groupby分配对象dtypes

时间:2015-08-07 18:54:01

标签: python pandas merge grouping

这个python DataFrame

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是否等于当前行的{{1 }}

也许IDgroupby一起使用?我还不熟悉apply

1 个答案:

答案 0 :(得分:0)

您可以在组上使用“应用”,这样您就可以转换组。这意味着内部函数为具有相同ID的每组条目返回一些内容。

group apply

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

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