有一个1000万行的dataframe

  统计/机器学习 Python    浏览次数:246        分享
0

df只有一列a

从第一行开始a的每10行相加放到a的后边形成suma 

第一个suma =sum(df.a[0:9])

第2个suma =sum(df.a[1:10])


用最笨的方法计算 大概3个小时 

有没有高效的方法呢

 

constant007   2019-06-23 08:21



   3个回答 
1

pandas里有rolling,可以求移动和以及移动均值的。

df['a'].rolling(window=10).sum()
SofaSofa数据科学社区DS面试题库 DS面经

WinJ   2019-06-24 01:08

0

你可以插入一个辅助列叫flag,第0-9行flag=0,10-19行flag=1,20-29行flag=2.

df['flag'] = np.arange(len(df)) // 10

然后以flag为key对a列进行groupby求和就可以了

df.groupby('flag', as_index=False).agg({'a': 'sum'})
SofaSofa数据科学社区DS面试题库 DS面经

清风   2019-06-23 14:52

suma.at[0,s] =sum(df.a[0:9]) suma.at[1,s] =sum(df.a[1:10]) 求和是有交叉的 - constant007   2019-06-23 16:12
0

可以换用numpy操作,应该能快一些

SofaSofa数据科学社区DS面试题库 DS面经

千树   2019-06-23 08:55



  相关主题

怎么合并(串联)两个dataframe?   1回答

如何对将Python dictionary里的key按照value进行排序?   1回答

求多个torch tensor的平均值   1回答

from __future__ import division是什么意思   2回答

dataframe数据变long python有stata类似的命令吗   1回答

请问python已知某个元素,怎么得到该元素在dataframe中的位置   1回答

python如何判断某路径下是否存在指定的csv文件?   2回答

gc.collect()返回值是什么意思   1回答

python里的continue是什么意思   2回答

如何将csv中多行变成一行   2回答

引用报错ImportError: No module named stats   1回答

怎么把python的dict存为json格式文件   2回答



回答问题时需要注意什么?

我们谢绝在回答前讲“生动”的故事。

我们谢绝“这么简单,你自己想”、“书上有的,你认真看”这类的回答;如果你认为对方的提问方式或者内容不妥,你可以直接忽略该问题,不用进行任何作答,甚至可以对该问题投反对票。

我们谢绝答非所问。

我们谢绝自己不会、硬要回答。

我们感激每一个用户在编写答案时的努力与付出!