gpt4 book ai didi

python - 如何将日期时间中的日期更改为当月的第一天

转载 作者:行者123 更新时间:2023-12-04 08:46:37 24 4
gpt4 key购买 nike

我有以下数据框 df :

          date     USDBRL
0 1994-01-31 458.6600
1 1994-02-28 637.4500
2 1994-03-30 913.3450
3 1994-04-29 1302.2800
4 1994-05-31 1875.2700
.. ... ...
317 2020-06-30 5.4760
318 2020-07-31 5.2033
319 2020-08-31 5.4713
320 2020-09-30 5.6407
321 2020-10-09 5.5393
我想全部改变 date值到一个月的第一天。
我试过这个:
df['date'] = datetime(df['date'].dt.year, df['date'].dt.month, 1)
但我收到语法错误:
TypeError: cannot convert the series to <class 'int'>

最佳答案

  • 使用 pandas.offsets.MonthBegin将日期设置为月初。
  • 还有 Pandas: convert date in month to the 1st day of next month
  • pandas User Guide: Time series / date functionality
  • pandas: Date offsets
  • MonthBegin

  • method 1将日期设置为月初,但如果日期已经是 1 号,则日期设置为上个月的第一天。
  • method 2首先将日期设置为月底,然后设置为月初。

  • import pandas as pd

    # sample data
    df = pd.DataFrame({'date': [pd.Timestamp('1994-01-31 00:00:00'), pd.Timestamp('1994-02-28 00:00:00'), pd.Timestamp('1994-03-30 00:00:00'), pd.Timestamp('1994-04-29 00:00:00'), pd.Timestamp('1994-05-31 00:00:00'), pd.Timestamp('2010-01-01 00:00:00'), pd.Timestamp('2010-01-31 00:00:00'), pd.Timestamp('2010-03-02 00:00:00'), pd.Timestamp('2010-04-01 00:00:00'), pd.Timestamp('2010-05-01 00:00:00'), pd.Timestamp('2010-05-31 00:00:00'), pd.Timestamp('2020-06-30 00:00:00'), pd.Timestamp('2020-07-31 00:00:00'), pd.Timestamp('2020-08-31 00:00:00'), pd.Timestamp('2020-09-30 00:00:00'), pd.Timestamp('2020-10-09 00:00:00')]})

    # method 1
    df['m1'] = df.date - pd.offsets.MonthBegin(1)

    # method 2
    df['m2'] = df.date - pd.offsets.MonthEnd(0) - pd.offsets.MonthBegin(1)
    enter image description here
  • 正如 ALollz 所指出的在评论中,method 1 可能存在问题, 如果该月的第几天已经是第一天。
  • 在他的建议下,是一个更强大的解决方案,method 2 ,其中占天数为 1 日。

  • 关于python - 如何将日期时间中的日期更改为当月的第一天,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64285941/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com