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
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
。
您可以对组使用应用,这允许您转换组。这意味着 returns 中的函数针对具有相同 ID 的每组条目。
g = df.groupby("ID")
s = g["Based on"].apply(lambda group: group.values)
s.to_frame()
s 是一个系列,您可能想转换为数据框
这个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
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
。
您可以对组使用应用,这允许您转换组。这意味着 returns 中的函数针对具有相同 ID 的每组条目。
g = df.groupby("ID")
s = g["Based on"].apply(lambda group: group.values)
s.to_frame()
s 是一个系列,您可能想转换为数据框