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。
我正在从 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。