【问题标题】:Find difference and std at different dates in dataframe在数据框中的不同日期查找差异和标准
【发布时间】:2018-02-09 17:25:29
【问题描述】:

我有一个包含 2 列“日期”和“温度”的数据框:

              Temp
Date               
2017-08-31  43.8532
2017-08-30  44.1702
2017-08-29  43.7581
2017-08-28  43.8680
2017-08-25  43.5181
2017-08-24  43.9274
2017-08-23  43.6600
2017-08-22  43.5773
2017-08-21  43.7247
2017-08-18  43.7179
2017-08-17  43.7072
2017-08-16  43.3215
2017-08-15  43.3597
2017-08-14  43.3082
2017-08-11  43.5351
2017-08-10  43.6848
...         ...
31/08/2016  37.873
30/08/2016  38.6831
29/08/2016  38.7264
26/08/2016  39.1932
25/08/2016  39.1318
...         ...

我希望创建 2 个新列 '1 yr diff' 和 '1 yr std'

'1 yr diff' 是一年中两个日期之间的温差。

'1 yr std'是过去一年的温度标准差。

前三个手工计算:

Date    Temp    1 yr diff   1 yr std
31/08/2017  43.8532 5.9802  1.914
30/08/2017  44.1702 5.4871  1.909
29/08/2017  43.7581 5.0317  1.901

如何对所有行执行此操作?

【问题讨论】:

  • 该链接将我带到“当有人回答我的问题时我该怎么办? '
  • 样本数据,你之前尝试过的,你预期的输出。 :)
  • 更新了帖子,感谢您指出之前的不整洁

标签: python pandas numpy dataframe pandas-groupby


【解决方案1】:

试一试:

one_year = pandas.offsets.Year(1)
df = (
    df.assign(diff_1yr=df['Temp'] - df['Temp'].shift(freq=one_year))
      .assign(std_1yr=df['Temp'].rolling(one_year).std())
)

【讨论】:

    【解决方案2】:
    diff = df.Temp.resample('D').ffill().diff(365).rename('1 yr diff')
    std = df.Temp.rolling('365D').std().rename('1 yr std')
    pd.concat([df, diff, std], axis=1).dropna()
    
                    Temp  1 yr diff  1 yr std
    Date                                     
    2017-06-30  0.467765  -0.421425  0.287502
    2017-06-29  0.293493  -0.479262  0.288638
    2017-06-28  0.089505  -0.080712  0.288987
    2017-06-27  0.156842  -0.254886  0.288611
    2017-06-26  0.061712  -0.286930  0.287945
    2017-06-23  0.691029   0.623226  0.286886
    2017-06-22  0.135094  -0.120836  0.287729
    2017-06-21  0.597864  -0.286051  0.287270
    2017-06-20  0.594055   0.008702  0.288266
    2017-06-19  0.823582   0.509880  0.288254
    ...
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多