[英]How do I fix this datetime error in pandas?
我有一个充满日期的数据框。 但是,其中一些的格式与其他格式不同。 例如,我有以下格式的
2010-01-22
我也有以下格式的
2010-22-1
当我使用
df['date'] = pd.to_datetime(df['date'])
我收到错误
month must be in 1..12: 2010-22-1
我怎样才能解决这个问题?
您可以使用df['date'].apply(your_function)
并编写your function
,该your function
将尝试解析year-month-day
,如果捕获错误,它将尝试解析year-day-month
最小的例子
import pandas as pd
import datetime
def convert(item):
#print(item)
try:
return datetime.datetime.strptime(item, "%Y-%m-%d")
except Exception as ex:
print('Exception:', ex)
try:
return datetime.datetime.strptime(item, "%Y-%d-%m")
except Exception as ex:
print('Exception:', ex)
print('not converted:', item)
return item
# --- main --
data = {
'date': ['2010-01-22','2010-22-01', '2021-11-05'],
}
df = pd.DataFrame(data)
print(df)
print(df.dtypes)
df['date'] = df['date'].apply(convert)
print(df)
print(df.dtypes)
结果:
date
0 2010-01-22
1 2010-22-01
2 2021-11-05
date object
dtype: object
Exception: time data '2010-22-01' does not match format '%Y-%m-%d'
date
0 2010-01-22
1 2010-01-22
2 2021-11-05
date datetime64[ns]
dtype: object
编辑:
如果您有更多格式,则可以使用for
-loop
def convert(item):
#print(item)
for pattern in ["%Y-%m-%d", "%Y-%d-%m"]:
try:
return datetime.datetime.strptime(item, pattern)
except Exception as ex:
print('Exception:', ex)
print('not converted:', item)
return item
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.