我有以下数据框:
xl_file
Out[2]:
Day Description
Date
2011-01-26 Wednesday Republic Day
2011-03-02 Wednesday Mahashivratri
2011-04-12 Tuesday Ram Navmi
2011-04-14 Thursday Dr. Babasaheb Ambedkar Jayanti
2011-04-22 Friday Good Friday
... ...
2020-05-25 Monday Id-Ul-Fitr (Ramzan ID)
2020-10-02 Friday Mahatma Gandhi Jayanti
2020-11-16 Monday Diwali-Balipratipada
2020-11-30 Monday Gurunanak Jayanti
2020-12-25 Friday Christmas
[144 rows x 2 columns]
为了将Day
列转换为datetime
字段,我使用了以下代码:
xl_file['Day'] = pd.to_datetime(xl_file['Day'], format = '%A')
我在哪里指定了格式,但是我得到了:
xl_file
Out[4]:
Day Description
Date
2011-01-26 1900-01-01 Republic Day
2011-03-02 1900-01-01 Mahashivratri
2011-04-12 1900-01-01 Ram Navmi
2011-04-14 1900-01-01 Dr. Babasaheb Ambedkar Jayanti
2011-04-22 1900-01-01 Good Friday
... ...
2020-05-25 1900-01-01 Id-Ul-Fitr (Ramzan ID)
2020-10-02 1900-01-01 Mahatma Gandhi Jayanti
2020-11-16 1900-01-01 Diwali-Balipratipada
2020-11-30 1900-01-01 Gurunanak Jayanti
2020-12-25 1900-01-01 Christmas
[144 rows x 2 columns]
如何更改格式,以便datetime字段显示日期名称。
我尝试过:
xl_file['Day'].date.dayofweek
但是会出现错误:AttributeError: 'Series' object has no attribute 'date'
答案 0 :(得分:1)
您正在尝试使用字符串文本更新日期?日期在索引中。我不确定日期时间中是否有该字符串,但让我们假设它只是一个字符串。将索引转换为日期时间(时间戳)。
df.index = pd.to_datetime(df.index)
print(df)
Day
Date
2011-01-26 Wednesday
2011-03-02 Wednesday
2011-04-12 Tuesday
2011-04-14 Thursday
2011-04-22 Friday
2020-05-25 Monday
2020-10-02 Friday
2020-11-16 Monday
2020-11-30 Monday
2020-12-25 Friday
但是Day列仍然只是一个字符串。我们可以使用day_name()从日期中获取日期名称并将其设置为一列。
df["Day_Name"] = df.index.day_name()
print(df)
Day Day_Name
Date
2011-01-26 Wednesday Wednesday
2011-03-02 Wednesday Wednesday
2011-04-12 Tuesday Tuesday
2011-04-14 Thursday Thursday
2011-04-22 Friday Friday
2020-05-25 Monday Monday
2020-10-02 Friday Friday
2020-11-16 Monday Monday
2020-11-30 Monday Monday
2020-12-25 Friday Friday
如果您希望索引包含日期。
df.index = df.index.day_name()