【问题标题】:How to calculate the difference between 2 consecutive dataframes using pandas如何使用熊猫计算两个连续数据帧之间的差异
【发布时间】:2020-06-07 22:56:22
【问题描述】:

我在使用 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

如何快速计算 2 个日期的天数之差?最后,我想计算平均每月增长百分比。 结果应该是相差30天和31天交替出现。必须有一个快速命令来计算两个连续日期之间的差异,但我似乎找不到它。

【问题讨论】:

  • 我可以做笔记吗?您在此处打印的内容表明您拥有的是 pd.Series 而不是 pd.DataFrame。
  • pct_change方法。
  • 啊哈,是的,我查过了,确实是 pd.Series。
  • 我用过,我用过。然而,它似乎给了我一个价值差异,但我想用这个百分比除以过去的天数。

标签: python pandas


【解决方案1】:

我们可以做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

【讨论】:

    【解决方案2】:

    我看到您已经有了答案,但这在其他一些情况下可能会有用。

    您可以使用 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
    

    【讨论】:

      猜你喜欢
      • 2016-11-13
      • 2022-11-29
      • 2019-12-25
      • 2017-09-06
      • 1970-01-01
      • 2021-07-24
      • 2018-04-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多