如何使用熊猫计算两个连续数据帧之间的差异

时间:2020-06-07 14:20:24

标签: python pandas

我在使用熊猫方面还比较陌生,我具有以下数据框:

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天。必须有一个快速命令来计算两个连续日期之间的差异,但我似乎找不到它。

2 个答案:

答案 0 :(得分:3)

我们可以做pct_changemean

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