gpt4 book ai didi

python - 如何在groupby之后聚合Pandas中的向量列?

转载 作者:行者123 更新时间:2023-12-01 07:01:48 24 4
gpt4 key购买 nike

我有一个 pandas DataFrame,其中包含具有功能的用户(根据 TensorFlow 词嵌入计算)。我希望能够按用户分组并计算矢量化特征的平均值或中值:

embeddings

user    features
bob [-0.030460168, -0.0014596573, 0.0997446, -0.18...
bob [-0.03197706, 0.015620711, 0.05890667, -0.0402...
bob [-0.060918115, 0.07939958, 0.0333591, 0.035655...
mary [-0.012854534, 0.07733478, 0.12939823, 0.00992...
mary [-0.04184026, 0.03382166, 0.1427004, -0.204424...

我尝试过这样的事情:

df.groupby('user').agg(count=('user', lambda x: len(x)),
mean=('features', lambda x: np.mean(x)))

但它会引发以下错误:

Exception: Must produce aggregated value

最佳答案

问题是 x 是 numpy.arrays 的 pd.Series,假设您想要质心,则可以使用 np.vstack并找到第一个轴的平均值:

设置

import numpy as np
import pandas as pd

arrays = [np.array([-0.030460168, -0.0014596573, 0.0997446, -0.18]),
np.array([-0.03197706, 0.015620711, 0.05890667, -0.0402]),
np.array([-0.060918115, 0.07939958, 0.0333591, 0.035655]),
np.array([-0.012854534, 0.07733478, 0.12939823, 0.00992]),
np.array([-0.04184026, 0.03382166, 0.1427004, -0.204424])]

users = ['bob', 'bob', 'bob', 'mary', 'mary']

df = pd.DataFrame(data={'user': users, 'features': arrays})

代码

result = df.groupby('user').agg(count=('user', lambda x: len(x)),
mean=('features', lambda x: np.vstack(x).mean(axis=0).tolist()))

print(result)

输出

      count                                               mean
user
bob 3 [-0.04111844766666667, 0.031186877899999996, 0...
mary 2 [-0.027347397, 0.055578220000000005, 0.1360493...

关于python - 如何在groupby之后聚合Pandas中的向量列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58596439/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com