【问题标题】:convert float to datetime when month is decimal place (YYYY.MM float)当月份为小数位时将浮点数转换为日期时间(YYYY.MM 浮点数)
【发布时间】:2022-11-15 14:45:42
【问题描述】:

这是我的数据:

d = pd.DataFrame({'date': [2021.01, 2021.02, 2021.03, 2021.04],
                   'value': [2, 3, 4, 1]})

d

我想将日期列转换为日期。它目前是浮点数,月份在小数位 (YYYY.mm)

这不起作用:

pd.to_datetime(d['date'], format='%Y.%m', errors='coerce').dt.to_period('m') 

【问题讨论】:

    标签: python-3.x pandas


    【解决方案1】:

    您可以乘以 100 并使用整数作为 to_datetime 的输入:

    pd.to_datetime(d['date'].mul(100).astype(int), format='%Y%m').dt.to_period('m')
    

    注意。它似乎即使不转换为整数也能工作,但我仍然会这样做,或者使用 round 来避免浮点歧义(取决于想要的输出)

    输出:

    0    2021-01
    1    2021-02
    2    2021-03
    3    2021-04
    Name: date, dtype: period[M]
    

    【讨论】:

      【解决方案2】:
      d.loc[:,'date']=pd.to_datetime(d.date.astype(str), format='%Y.%m').dt.strftime('%Y-%m')
      d
      
           date  value
      0  2021-01      2
      1  2021-02      3
      2  2021-03      4
      3  2021-04      1
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-07-22
        • 2022-01-17
        • 2019-02-17
        • 1970-01-01
        • 2018-12-23
        相关资源
        最近更新 更多