如何快速为大型Pandas DataFrame添加序列差分列?
高效实现Pandas序列差分并新增列
直接使用Pandas内置的diff()方法即可完成需求,这是矢量化操作,底层基于C实现,相比Python循环能带来数量级的性能提升,完全解决超大型数据集的耗时问题。
实现代码
import pandas as pd # 示例DataFrame df = pd.DataFrame({ 'series_1' : [10.1, 15.3, 16, 12, 14.5, 11.8, 2.3, 7.7,5,10], 'series_2' : [9.6,10.4, 11.2, 3.3, 6, 4, 1.94, 15.44, 6.17, 8.16] }) # 新增diff_2列:计算series_2的一阶差分(当前行 - 前一行) df['diff_2'] = df['series_2'].diff()
结果说明
diff()默认参数periods=1,即计算相邻行的差值,第一行因无前置数据会生成NaN- 执行后DataFrame的输出如下:
series_1 series_2 diff_2 0 10.1 9.60 NaN 1 15.3 10.40 0.80 2 16.0 11.20 0.80 3 12.0 3.30 -7.90 4 14.5 6.00 2.70 5 11.8 4.00 -2.00 6 2.3 1.94 -2.06 7 7.7 15.44 13.50 8 5.0 6.17 -9.27 9 10.0 8.16 1.99
可选调整
如果需要填充第一行的NaN,可以搭配fillna()方法:
# 将NaN替换为0,也可替换为其他值如series_2的第一个值 df['diff_2'] = df['series_2'].diff().fillna(0)
内容的提问来源于stack exchange,提问作者Khaled DELLAL
相关产品推荐
相关产品推荐

