【问题标题】:Create pandas dataframe from datetime range [duplicate]从日期时间范围创建熊猫数据框[重复]
【发布时间】:2021-12-29 21:37:38
【问题描述】:

我目前有一个数据,范围从 2020-11-03 到 2021-10-01。

我想创建一个新的数据框,其中行值等于日期。

澄清数据名的第一行是 2020-11-03,第二行是 2020-11-04,依此类推。

有没有办法创建一个新的数据框,其中行将是给定范围之间的每个日期?

我计划稍后映射其他值,所以我目前只需要一个只有一列的新数据框。

提前谢谢你!!

【问题讨论】:

  • Dereke 的回答很到位,但在这个问题上有很多骗局 - 请参阅链接的答案。

标签: python pandas datetime


【解决方案1】:

Pandas 实现了 DatetimeIndex 类,您可以使用 pandas.date_range 函数对其进行实例化。

import pandas as pd
pd.date_range(start='2020-11-03', end='2021-10-01')
DatetimeIndex(['2020-11-03', '2020-11-04', '2020-11-05', '2020-11-06',
               '2020-11-07', '2020-11-08', '2020-11-09', '2020-11-10',
               '2020-11-11', '2020-11-12',
               ...
               '2021-09-22', '2021-09-23', '2021-09-24', '2021-09-25',
               '2021-09-26', '2021-09-27', '2021-09-28', '2021-09-29',
               '2021-09-30', '2021-10-01'],
              dtype='datetime64[ns]', length=333, freq='D')

如果您确实需要该范围内的 DataFrame,您可以从之前创建一个:

pd.DataFrame(pd.date_range(start='2020-11-03', end='2021-10-01'), columns=['dates'])

参考:https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.date_range.html

【讨论】:

    【解决方案2】:

    您可以使用 pandas 函数 date_range(文档 here)并将所需的日期字符串传递给 startend 参数(默认频率为 1 天):

    df = pd.DataFrame({'date':pd.date_range(start='2020-11-03', end='2021-10-01')})
    

    输出:

    >>> df
              date
    0   2020-11-03
    1   2020-11-04
    2   2020-11-05
    3   2020-11-06
    4   2020-11-07
    ..         ...
    328 2021-09-27
    329 2021-09-28
    330 2021-09-29
    331 2021-09-30
    332 2021-10-01
    
    [333 rows x 1 columns]
    

    【讨论】:

      猜你喜欢
      • 2018-07-13
      • 1970-01-01
      • 2021-06-30
      • 2017-11-30
      • 2016-05-08
      • 2012-07-06
      • 1970-01-01
      • 1970-01-01
      • 2020-03-14
      相关资源
      最近更新 更多