这个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
3553103948
和3553104038
如何同时拥有Conv rate
和CTR
?
如何按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 }}
也许ID
和groupby
一起使用?我还不熟悉apply
。
答案 0 :(得分:0)
您可以在组上使用“应用”,这样您就可以转换组。这意味着内部函数为具有相同ID的每组条目返回一些内容。
g = df.groupby("ID")
s = g["Based on"].apply(lambda group: group.values)
s.to_frame()
是一个系列,您可能想要转换为数据框