pandas read_csv 解析日期
pandas read_csv parse dates
我写了这个日期解析函数
def date_parser(string):
try:
date = pd.datetime.strptime(string, "%d/%m/%Y")
except:
date = pd.NaT
return date
我在 pd.read_csv 中这样称呼它
df = pd.read_csv(os.path.join(path, file),
sep=";",
encoding="latin-1",
keep_default_na=False,
na_values=na_values,
index_col=False,
usecols=keep,
dtype=dtype,
date_parser=date_parser,
parse_dates=dates)
问题是在我的一个日期列中,我最终得到了混合数据类型
df[data].apply(type).value_counts()
- class 'datetime.datetime'
- class 'pandas._libs.tslibs.timestamps.Timestamp'
- class 'pandas._libs.tslibs.nattype.NaTType'
我应该只有最后两个吧?
如果不匹配格式 %d/%m/%Y
:
,我建议将 to_datetime
更改为 errors='coerce'
for return NaT
def date_parser(string):
return pd.to_datetime(string, format="%d/%m/%Y", errors='coerce')
我写了这个日期解析函数
def date_parser(string):
try:
date = pd.datetime.strptime(string, "%d/%m/%Y")
except:
date = pd.NaT
return date
我在 pd.read_csv 中这样称呼它
df = pd.read_csv(os.path.join(path, file),
sep=";",
encoding="latin-1",
keep_default_na=False,
na_values=na_values,
index_col=False,
usecols=keep,
dtype=dtype,
date_parser=date_parser,
parse_dates=dates)
问题是在我的一个日期列中,我最终得到了混合数据类型
df[data].apply(type).value_counts()
- class 'datetime.datetime'
- class 'pandas._libs.tslibs.timestamps.Timestamp'
- class 'pandas._libs.tslibs.nattype.NaTType'
我应该只有最后两个吧?
如果不匹配格式 %d/%m/%Y
:
to_datetime
更改为 errors='coerce'
for return NaT
def date_parser(string):
return pd.to_datetime(string, format="%d/%m/%Y", errors='coerce')