如何用Pandas高效计算DataFrame相邻元素的差值?
Pandas快速计算DataFrame相邻行差分的方法
首先纠正你代码里的一个小问题:np.random.random的参数需要是元组,所以正确的DataFrame创建代码应该是:
import pandas as pd import numpy as np df = pd.DataFrame(data=np.random.random((10,10)))
要实现你要的diff[i] = df[i] - df[i-1]的需求,完全不需要写循环,Pandas内置了高效的向量化方法diff(),一行代码就能搞定:
diff = df.diff()
说明:
diff()方法默认按行方向(axis=0)计算差分,也就是每一行元素减去它的上一行对应元素,完全符合你的要求。- 结果的第一行会是
NaN,因为没有“上一行”可以用来计算差值,这是合理的默认行为。如果需要移除这一行,可以用diff = df.diff().dropna();如果需要填充NaN,可以用diff = df.diff().fillna(0)(或其他你需要的填充值)。
这个方法是Pandas底层优化的向量化操作,比循环快几个数量级,不管你的DataFrame多大,扩展性都拉满。
内容的提问来源于stack exchange,提问作者the.lotuseater
相关产品推荐
相关产品推荐

