pd.DatetimeIndex继续返回错误的月份

时间:2019-07-04 06:53:32

标签: python-3.x pandas datetimeindex

我正在从csv文件中读取数据,并且我的Date列的格式为“ dd / mm / yyyy”

我只想从中提取月份。

问题在于,在某些情况下(根据我的观察,当dd> 12时),它将正确返回月份。否则,它将返回日期。

我尝试提取一天,假设内置格式为“ mm / dd / yyyy” ,但是发生相同的问题。仅正确提取年份。

我尝试通过用“-” 替换“ /” 来重新格式化日期,但是并不能解决问题。

这是提取月份的代码:

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

这是我获得的结果的一个例子。

Date: 19-01-2012,
Month: 01

Date: 04-01-2012,
Month: 04

2 个答案:

答案 0 :(得分:3)

您可以做的一件事是将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月都是1。

答案 1 :(得分:1)

尝试添加SpanCustomizer

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)

我希望它能解决您的问题