1000万行的pandas dataframe求和很慢

  统计/机器学习 Python    浏览次数:2816        分享
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个回答 
2

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



  相关讨论

pandas DataFrame中经常出现SettingWithCopyWarning

pandas.DataFrame的index重新排列(从0开始)

将pandas.DataFrame中的-1全部换成0

pandas DataFrame去掉重复的行

pd.dataframe怎么同时对两个key排序?

怎么按照index对pd.DataFrame的行排序?

怎么添加pandas的dataframe到已有的csv文件,并且不覆盖原内容

怎么删除pandas数据框指定的第k行?

怎么利用pandas获得一个列联表(contingency table)?

pandas操作出现ValueError: The truth value of a Series is ambiguous.

  随便看看

逻辑回归模型中变量的系数怎么理解?

推荐系统中的召回(recall)是什么意思?

训练集中有的特征含有缺失值,一般怎么处理

怎么利用permutation importance来解释xgboost模型的特征?

怎么按照设定概率产生不重复的随机排序?