我在使用熊猫方面还比较陌生,我具有以下数据框:
Date
2019-06-01 195.585770
2019-07-01 210.527466
2019-08-01 206.278168
2019-09-01 222.169479
2019-10-01 246.760193
2019-11-01 265.101562
2019-12-01 292.163818
2020-01-01 307.943604
2020-02-01 271.976532
2020-03-01 253.603500
2020-04-01 293.006836
2020-05-01 317.081665
2020-06-01 331.500000
2020-06-05 331.500000
Name: AAPL, dtype: float64
如何快速计算两天之间的日期差?最后,我想计算平均每月增长百分比。 结果应该是相隔30天和31天。必须有一个快速命令来计算两个连续日期之间的差异,但我似乎找不到它。
答案 0 :(得分:3)
我们可以做pct_change
和mean
:
df['AAPL'].pct_change().mean()
或者如果您的系列是
s.pct_change().mean()
如果您想了解每日百分比变化:
s.pct_change()/s.index.to_series().diff().dt.days
输出:
Date
2019-06-01 NaN
2019-07-01 0.002546
2019-08-01 -0.000651
2019-09-01 0.002485
2019-10-01 0.003689
2019-11-01 0.002398
2019-12-01 0.003403
2020-01-01 0.001742
2020-02-01 -0.003768
2020-03-01 -0.002329
2020-04-01 0.005012
2020-05-01 0.002739
2020-06-01 0.001467
2020-06-05 0.000000
dtype: float64
答案 1 :(得分:0)
我看到您已经有了答案,但这在某些其他情况下可能会有用。
您可以使用 df.itterows()轻松掌握日期差异。首先,请确保将您的 Date 行转换为日期时间。然后遍历行并抓住差异。
df = pd.DataFrame(data={'Date':['2020-04-01','2020-05-01','2020-06-01','2020-06-05 '], 'Col2':['195.585770','210.527466','331.500000','331.500000']})
df['Date'] = pd.to_datetime(df['Date']) #convert to datetime
for index, row in df.iterrows():
if not index == 0:
print(row['Date'] - df['Date'][index-1])
输出将如下所示:
30 days 00:00:00
31 days 00:00:00
4 days 00:00:00