【问题标题】:Date formatting in pandas columns熊猫列中的日期格式
【发布时间】:2019-11-28 19:57:12
【问题描述】:

我有 2 个两个数据框。

Date       thing
201712.0    1
201801.0    2

Date 列是 float64 类型,我正在尝试将其分别转换为 12/1/2017 和 1/1/2018 的日期。

Date        thing2
12/16/2017    2
1/16/2018     3

这里的日期列是对象类型,我希望也转换为 12/1/2017 和 1/1/2018。这里的想法是在之后执行 pd.merge。

【问题讨论】:

  • 第一个数据框的日期列是float 类型还是str 类型?
  • 第一个数据框Date列是float64

标签: python pandas datetime merge type-conversion


【解决方案1】:

使用pandas.to_datetime 转换原始数据框的'Date' 列:

df1 = pd.DataFrame([[201712.0, 1], [201801.0, 2]], columns=["Date", "thing"])
df2 = pd.DataFrame([["12/16/2017", 2], ["1/16/2018", 3]], columns=["Date", "thing2"])

df1['Date'] = pd.to_datetime(df1['Date'].astype(str), format='%Y%m.0')
df2['Date'] = pd.to_datetime(df2['Date']).apply(lambda x : x.replace(day=1))

在第一个数据帧中,'Date' 列被转换为字符串类型(.astype(str)),以便使用格式字符串。
在第二个数据帧中,apply 函数用于将月份中的某一天从一开始的日期重置为第一天。

【讨论】:

    【解决方案2】:

    你需要:

    df['Date'] = pd.to_datetime(df['Date'], format='%Y%m') + pd.Timedelta(days=16)
    

    输出:

            Date    thing
    0   2017-12-16  1
    1   2018-01-16  2
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-23
      • 1970-01-01
      相关资源
      最近更新 更多