【发布时间】:2020-10-26 02:47:26
【问题描述】:
我正在做一个时间序列分析,我需要计算几个属性随时间的变化。 Pandas 制作了一个简单的版本; .diff(periods=n) 函数将计算一行与前 n 行之间的差异,但是,这不是我需要的相当...
df= pd.DataFrame({'day_num': [134, 135, 136, 137],
'swe': [38.8, 38.9, 37.6, 36.8],
'prcp': [0., 0.1, 0., 0.15],
'flow': [2930, 3350, 3900, 4090]})
diff_3 = df.diff(periods=3)
返回:
day_num swe prcp flow
0 134 38.8 0.00 2930
1 135 38.9 0.00 3350
2 136 37.6 0.00 3900
3 137 36.8 0.15 4090
还有:
day_num swe prcp flow
0 NaN NaN NaN NaN
1 NaN NaN NaN NaN
2 NaN NaN NaN NaN
3 3.0 -2.0 0.15 1160.0
在 swe 列(以英寸为单位的雪水当量,字面意思是特定积雪的液态水当量),指数 3 的 3 天差异为 -2.0,等于 36.8 - 38.8。但是,请注意在 3 天内有增加和减少。这意味着在这 3 天的窗口中,总共 2.1 英寸(我想要的输出)的水融化并促成了水流(流柱)。最小值 - 最大值也不起作用,因为如果我将 n 值增加到 7 或 14,很容易出现输出中未考虑的“熔化”。需要的是 n 天内单日差异的总和。我最终想将 diff_n 列合并回原始数据集。
任何想法将不胜感激。另外,这是我的第一篇文章,所以请告诉我如何改进我的格式/内容...
【问题讨论】:
标签: python pandas dataframe time-series