pd.DatetimeIndex 一直返回错误的月份

pd.DatetimeIndex keep returning the wrong month

我正在从 csv 文件中读取数据,我有一个格式为 "dd/mm/yyyy".

的日期列

我只想从中提取月份。

问题是在某些情况下(根据我的观察,当 dd > 12 时),returns 月份是正确的。否则,它将 returns 改为当天。

假设内置格式可能是"mm/dd/yyyy",我尝试提取日期,但出现了同样的问题。只有年份被正确提取。

我尝试通过将 "/" 替换为 "-"-"-" 来重新格式化日期,但没有解决问题。

这是提取月份的代码:

pd.DatetimeIndex(df['Date']).month

这是我获得的结果的示例。

Date: 19-01-2012,
Month: 01

Date: 04-01-2012,
Month: 04

尝试添加 format="%d-%m-%Y:

df = pd.DataFrame(data={'date':["19-01-2012","04-01-2012"]})

df['month'] = pd.to_datetime(df['date'],format="%d-%m-%Y").dt.month

print(df)
       date     month
0  19-01-2012      1
1  04-01-2012      1

希望能解决你的问题

您可以做的一件事是将 df['Date'] 列重铸为日期时间。

您可以使用 dayfirst 参数指定日期在前。

df['Date'] = pd.to_datetime(df['Date'], dayfirst=True)

来源:https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.to_datetime.html

当我在你的例子中使用它,并提取月份时:

pd.DatetimeIndex(df['Date']).month

我认为一月份的两个月都是 1。