pandas 包含参数在www.example.com _range()中未按预期工作pd.date[重复]

syqv5f0l  于 2023-01-24  发布在  其他
关注(0)|答案(2)|浏览(151)
    • 此问题在此处已有答案**:

Pandas date_range to generate monthly data at beginning of the month(2个答案)
4天前关闭。
对于pandas 1.40,在类pd.date_range()中引入了参数inclusive
包含{"两者"、"两者都不"、"左"、"右"},默认"两者"包括边界;将每个绑定设置为关闭还是打开
我想用它来创建一个df,从2020年1月的第一天开始,到2022年12月的第一天结束。

df = pd.date_range(start='01/01/2020', end='31/12/2022', freq = "M", inclusive = "left")

这不是给我预期的输出。

DatetimeIndex(['2020-01-31', '2020-02-29', '2020-03-31', '2020-04-30',
           '2020-05-31', '2020-06-30', '2020-07-31', '2020-08-31',
           '2020-09-30', '2020-10-31', '2020-11-30', '2020-12-31',
           '2021-01-31', '2021-02-28', '2021-03-31', '2021-04-30',
           '2021-05-31', '2021-06-30', '2021-07-31', '2021-08-31',
           '2021-09-30', '2021-10-31', '2021-11-30', '2021-12-31',
           '2022-01-31', '2022-02-28', '2022-03-31', '2022-04-30',
           '2022-05-31', '2022-06-30', '2022-07-31', '2022-08-31',
           '2022-09-30', '2022-10-31', '2022-11-30'],
          dtype='datetime64[ns]', freq='M')
    • 预期产出**
DatetimeIndex(['2020-01-01', '2020-02-01', '2020-03-01', '2020-04-01',
           '2020-05-01', '2020-06-01', '2020-07-01', '2020-08-01',
           '2020-09-01', '2020-10-01', '2020-11-01', '2020-12-01',
           '2021-01-01', '2021-02-01', '2021-03-01', '2021-04-01',
           '2021-05-01', '2021-06-01', '2021-07-01', '2021-08-01',
           '2021-09-01', '2021-10-01', '2021-11-01', '2021-12-01',
           '2022-01-01', '2022-02-01', '2022-03-01', '2022-04-01',
           '2022-05-01', '2022-06-01', '2022-07-01', '2022-08-01',
           '2022-09-01', '2022-10-01', '2022-11-01', '2022-12-01' ],
          dtype='datetime64[ns]', freq='M')

1.如何使用pd.date_range()获得预期输出?
1.关于如何正确使用pd.date_range()中的参数inclusive,我误解了什么?

f0brbegy

f0brbegy1#

从@imxitiz评论继续,尝试

pd.date_range(start='01/01/2020', end='31/12/2022', freq = "MS", inclusive = "left")

输出:

DatetimeIndex(['2020-01-01', '2020-02-01', '2020-03-01', '2020-04-01',
               '2020-05-01', '2020-06-01', '2020-07-01', '2020-08-01',
               '2020-09-01', '2020-10-01', '2020-11-01', '2020-12-01',
               '2021-01-01', '2021-02-01', '2021-03-01', '2021-04-01',
               '2021-05-01', '2021-06-01', '2021-07-01', '2021-08-01',
               '2021-09-01', '2021-10-01', '2021-11-01', '2021-12-01',
               '2022-01-01', '2022-02-01', '2022-03-01', '2022-04-01',
               '2022-05-01', '2022-06-01', '2022-07-01', '2022-08-01',
               '2022-09-01', '2022-10-01', '2022-11-01', '2022-12-01'],
              dtype='datetime64[ns]', freq='MS')
dgenwo3n

dgenwo3n2#

I have panda version 1.1.5 Inclusive无法识别并生成如下异常:

*builtins.TypeError: _generate_range() got an unexpected keyword argument 'inclusive'*

您想要的与inclusive无关,而是与频率类型有关:

*M表示月末
*MS表示月初(S表示开始)

此处定义的所有类型:https://pandas.pydata.org/pandas-docs/stable/user_guide/timeseries.html#timeseries-offset-aliases

建议的命令行

df = pd.date_range(start='01/01/2020', end='31/12/2022', freq = "MS")

结果

DatetimeIndex(['2020-01-01', '2020-02-01', '2020-03-01', '2020-04-01',
               '2020-05-01', '2020-06-01', '2020-07-01', '2020-08-01',
               '2020-09-01', '2020-10-01', '2020-11-01', '2020-12-01',
               '2021-01-01', '2021-02-01', '2021-03-01', '2021-04-01',
               '2021-05-01', '2021-06-01', '2021-07-01', '2021-08-01',
               '2021-09-01', '2021-10-01', '2021-11-01', '2021-12-01',
               '2022-01-01', '2022-02-01', '2022-03-01', '2022-04-01',
               '2022-05-01', '2022-06-01', '2022-07-01', '2022-08-01',
               '2022-09-01', '2022-10-01', '2022-11-01', '2022-12-01'],
              dtype='datetime64[ns]', freq='MS')

相关问题