这个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
相等的其他ID
。
也许是groupby
和apply
的结合?我还不熟悉apply
。
发布于 2015-10-02 19:15:36
您可以在组上使用apply,这允许您转换组。这意味着内部的函数为具有相同ID的每一组条目返回一些内容。
组应用
g = df.groupby("ID") s = g["Based on"].apply(lambda group: group.values) s.to_frame()
S是一个系列,您可能希望转换为dataframe。
https://stackoverflow.com/questions/31884771
复制相似问题