【问题标题】:Pandas datetime index all set to the same date in a month (1st)Pandas 日期时间索引全部设置为一个月内的同一日期(第 1 天)
【发布时间】:2016-01-17 04:33:26
【问题描述】:

我有一个像这样的数据框:

Date          Value
2014-11-03  8767.83
2014-12-01  8948.96
2015-01-02  9098.98
2015-02-02  8774.11
2015-03-02  9102.82
2015-04-01  8672.13
2015-05-01  8737.00
2015-06-01  8394.23
2015-07-01  8103.86
2015-08-03  8416.86
2015-09-01  7677.32
2015-10-01  7832.70

我希望所有日期都是本月的 1 日,例如:

Date          Value
2014-11-01  8767.83
2014-12-01  8948.96
2015-01-01  9098.98
2015-02-01  8774.11
2015-03-01  9102.82
2015-04-01  8672.13
2015-05-01  8737.00
2015-06-01  8394.23
2015-07-01  8103.86
2015-08-01  8416.86
2015-09-01  7677.32
2015-10-01  7832.70

我知道这必须非常简单,但我是 pandas/python 的新手,此时我找了一个多小时。提前致谢。

【问题讨论】:

  • Dateindex,还是“列”?

标签: python datetime pandas


【解决方案1】:

您可以只使用简单的列表推导来“转换”并重新分配您的索引:

In [3]: df
Out[3]: 
              Value
Date               
2014-11-03  8767.83
2014-12-01  8948.96
2015-01-02  9098.98
2015-02-02  8774.11
2015-03-02  9102.82
2015-04-01  8672.13
2015-05-01  8737.00
2015-06-01  8394.23
2015-07-01  8103.86
2015-08-03  8416.86
2015-09-01  7677.32
2015-10-01  7832.70

In [4]: df.index = [pd.datetime(x.year, x.month, 1) for x in df.index.tolist()] 
In [5]: df
Out[5]: 
              Value
2014-11-01  8767.83
2014-12-01  8948.96
2015-01-01  9098.98
2015-02-01  8774.11
2015-03-01  9102.82
2015-04-01  8672.13
2015-05-01  8737.00
2015-06-01  8394.23
2015-07-01  8103.86
2015-08-01  8416.86
2015-09-01  7677.32
2015-10-01  7832.70

【讨论】:

    【解决方案2】:

    我知道这是一个老问题,但如果你想从头开始创建每月开始索引,你可以利用 Panda 的 offset-alias 功能来做到这一点。

    import pandas as pd
    monthly_start_index = pd.date_range(start='2018-01-01', 
                                        stop='2018-12-01',
                                        freq = 'MS')
    df.index = monthly_start_index
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-08-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-12
      • 1970-01-01
      相关资源
      最近更新 更多