有一个1000万行的dataframe

  统计/机器学习 Python    浏览次数:415        分享
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



  相关主题

python里有没有类似matlab里linspace的功能?   2回答

对tuple的元素赋值时报错:'tuple' object does not support item assignment   1回答

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

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

获取DataFrame所占空间的大小   2回答

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

python里求累计和   2回答

Anaconda安装wptools失败,提示找不到该包   2回答

怎么把一个大的dataframe按行分割成若干个小的dataframe。   1回答

python里有没有类似excel里的那种数据透视表?   1回答

怎么用python生成一个二维码,扫码跳转到一个指定的网页?   1回答

怎么让DataFrame按照某一列绝对值从小到按排列?   2回答



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

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

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

我们谢绝答非所问。

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

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