gpt4 book ai didi

python - 使用字典进行数据帧聚合

转载 作者:太空宇宙 更新时间:2023-11-03 15:44:11 25 4
gpt4 key购买 nike

我有一个像这样的大型二维数据框: 日期、user_id、val1、val2

由于我需要计算每个 user_id 的复杂函数,因此我执行以下操作:

for x in user_id_list :
dfi= df[ user_id= xx]
user_dict[x]['Newmycolname']= my_fun(dfi)
user_dict[x]['Newmycolname2']= my_fun2(dfi)

# map the user_dict to df after

这不是很有效但非常灵活,因为我可以计算任何类型子df(dfi)上的函数。此外,代码可以轻松并行......以牺牲速度为代价...

有没有办法通过 pandas 请求 grouby.agg 来替换循环并创建新的列名称?

最佳答案

是的,您可以使用pandas.DataFrame.groupbypandas.DataFrame.apply在每个组上转换为 pandas.Series :

>>> df.groupby('user_id')
.apply(lambda x: pd.Series(data=[my_fun(x), my_fun2(x)], index=['Newmycolname', 'Newmycolname2']))
Newmycolname Newmycolname2
user_id
1 3.5 17.0
2 6.0 20.0

没有 lambda 函数,只是为了更清楚地了解发生了什么:

>>> def worker(x):
... d = [my_fun(x), my_fun2(x)]
... i = ['Newmycolname', 'Newmycolname2']
... return pd.Series(data=d, index=i)
...
>>> df.groupby('user_id').apply(worker)
Newmycolname Newmycolname2
user_id
1 3.5 17.0
2 6.0 20.0

关于python - 使用字典进行数据帧聚合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41910794/

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