簡體   English   中英

如何將星期幾、月份、日期轉換為年 - 月 - 日期

[英]How can I convert day of week, Month, Date to Year - Month - Date

我在 pandas 列中有從 2018 年到 2021 年的日期,它們看起來像這樣:

日期
12 月 30 日,星期日
12 月 31 日,星期一

知道如何將其轉換為:

日期
2018 年 12 月 30 日
2018 年 12 月 31 日

從某種意義上說,知道一周中的哪一天,即(星期一、星期二等)是否有可能獲得該特定日期的年份?

我會看看這個對話。 如前所述,您可能需要定義一個年份范圍,因為 12 月 30 日(例如)有可能在一年多的時間里正好是星期日。 否則,可以收集輸入(12 月 30 日星期日)有效的年份列表。 您可能需要使用datetime將字符串轉換為 Python 可讀格式。

您可以迭代從 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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM