首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将群群矢量化并应用于大熊猫?

如何将群群矢量化并应用于大熊猫?
EN

Stack Overflow用户
提问于 2020-10-28 08:21:40
回答 1查看 1.3K关注 0票数 2

我正在尝试根据组对一个数据的几个列计算(x-x.means()/ (x.std +0.01) )。我的原始数据非常大。虽然我已经将原始文件分割成几个块,并且我使用多处理来运行文件的每个块上的脚本,但是每个数据块仍然非常大,而且这个过程从未完成。

我使用了以下代码:

代码语言:javascript
复制
df[val_cols] = df.groupby(['user_id', 'category', 'date'])[val_cols].apply(lambda x: (x - x.mean()) / (x.std() + 0.01))

根据我的经验,对于大型数据文件,应用和连接并不有效,因此我想找到一种替代groupby和应用函数的方法。

有谁知道这个过程向量化的更好的方法,而不是使用groupby并应用?我也不想要一个多处理库,比如pandarallel,更快或者是dask,因为我已经尝试过了,但是它们并没有帮助我。

样本df:

代码语言:javascript
复制
df = pd.DataFrame(columns=['user_id', 'category', 'date', 'item_id', 'value_1_diff', 'value_2_diff', 'value_3_diff'], data=[[4,8,'10/5/2019', 'hi', 5, 13, 21], [5,10,'1/12/2019', 'fine', 6, 15, 11], [4,8,'10/5/2019', 'hello', 5, 13, 3], [5,10,'1/12/2019', 'hi', 7, 8, 9], [3,8,'10/5/2019', 'ok', 5,7, 13]])

         user_id   category   date         item_id    value_1_diff   value_2_diff   value_3_diff
0        4         8          10/5/2019    hi          5             13             21
1        5         10         1/12/2019    fine        6             15             11
2        4         8          10/5/2019    hello       5             13             3
3        5         10         1/12/2019    hi          7             8              9
4        3         8          10/5/2019    ok          5             7              13
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-28 09:22:03

不确定性能,但这里可以使用GroupBy.transform

代码语言:javascript
复制
val_cols = ['value_1_diff', 'value_2_diff', 'value_3_diff']

g = df.groupby(['user_id', 'category', 'date'])[val_cols]
df[val_cols] = df[val_cols].sub(g.transform('min')).div(g.transform('std') + 0.01)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64568922

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档