我正在从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
答案 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)
我希望它能解决您的问题