【问题标题】:How can I convert day of week, Month, Date to Year - Month - Date如何将星期几、月份、日期转换为年份 - 月份 - 日期
【发布时间】:2021-02-03 23:20:32
【问题描述】:

我在 pandas 列中有从 2018 年到 2021 年的日期,它们看起来像这样:

Date
Sun, Dec 30
Mon, Dec 31

知道如何将其转换为:

Date
Dec 30 2018
Dec 31 2018

从某种意义上说,知道一周中的哪一天,即(星期一、星期二等)是否有可能获得该特定日期的年份?

【问题讨论】:

  • df.dtype 给你什么?
  • df.dtype 给出了一个对象

标签: python pandas date datetime


【解决方案1】:

我会看看this 的对话。如前所述,您可能需要定义年份范围,因为 12 月 30 日(例如)有可能在一年多的时间里正好是星期日。否则,可以收集输入(12 月 30 日星期日)有效的年份列表。您可能需要使用 datetime 将字符串转换为 Python 可读格式。

【讨论】:

    【解决方案2】:

    您可以迭代从 2018 年到 2022 年的年份以获取每个目标日期的工作日名称,然后找到匹配年份。

    df = pd.DataFrame({'Date': {0: 'Sun, Dec 30',
                                1: 'Mon, Dec 31'}})
    for col in range(2018, 2022):
        df[col] = '%s' % col + df['Date'].str.split(',').str[-1]
        df[col] = pd.to_datetime(df[col], format='%Y %b %d').dt.strftime('%a, %b %d')
    
    dfn = df.set_index('Date').stack().reset_index()
    cond = dfn['Date'] == dfn[0]
    obj = dfn[cond].set_index('Date')['level_1'].rename('year')
    

    结果:

    print(obj)
    
        Date
        Sun, Dec 30    2018
        Mon, Dec 31    2018
        Name: year, dtype: int64
    
    print(df.join(obj, on='Date'))
    
                  Date         2018         2019         2020         2021  year
        0  Sun, Dec 30  Sun, Dec 30  Mon, Dec 30  Wed, Dec 30  Thu, Dec 30  2018
        1  Mon, Dec 31  Mon, Dec 31  Tue, Dec 31  Thu, Dec 31  Fri, Dec 31  2018
    
    
    df_result = obj.reset_index()
    df_result['Date_new'] = df_result['Date'].str.split(',').str[-1] + ' ' + df_result['year'].astype(str)
    print(df_result)
    
                  Date  year      Date_new
        0  Sun, Dec 30  2018   Dec 30 2018
        1  Mon, Dec 31  2018   Dec 31 2018
    

    【讨论】:

      猜你喜欢
      • 2021-12-16
      • 2018-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-30
      • 1970-01-01
      • 2021-12-01
      • 1970-01-01
      相关资源
      最近更新 更多