我在 pandas 专栏中有 2018 年到 2021 年的日期,它们看起来像这样:
日期 |
---|
12 月 30 日星期日 |
12 月 31 日星期一 |
知道如何将其转换为:
日期 |
---|
2018 年 12 月 30 日 |
2018 年 12 月 31 日 |
从某种意义上说,知道星期几,即(星期一、星期二等)是否有可能获得该特定日期的年份?
答案 0 :(得分:1)
我会看一下 this 对话。如前所述,您可能需要定义一个年份范围,因为 12 月 30 日(例如)有可能在一年多的时间里是星期天。否则,可以收集输入(Sun,Dec 30)有效的年份列表。您可能需要使用 datetime 将字符串转换为 Python 可读格式。
答案 1 :(得分:0)
您可以迭代从 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