我正在使用Pandas读取.xlsx文件,代码如下:
client_df = pd.read_excel(
client_file,
header = 1,
parse_dates = ['Event Date'],
date_parser = lambda x: datetime.strftime(x, '%Y-%m-%d')
)
这个可以正常工作,但是我从Pandas得到了以下警告:
.venv/lib/python3.8/site-packages/pandas/io/parsers.py:3339: FutureWarning:
Use pd.to_datetime instead.
return generic_parser(date_parser, *date_cols)
我在某处读到Pandas正在弃用datetime。
- 有人能帮我将date_parser表达式转换为使用pd.to_datetime吗?
编辑:抱歉没有说明清楚。client_file datetime对象如下所示:
YYYY-MM-DD HH:MM:SS
我需要提取以下内容,作为str对象:
YYYY-MM-DD
编辑:@jezrael的答案(下面)完美地解决了问题 - 谢谢jezrael!
client_df = pd.read_excel(
client_file,
header = 1,
parse_dates = ['Event Date'],
converters={'Event Date': lambda x: pd.to_datetime(x).strftime('%Y-%m-%d')}
)
编辑2:@MrFuppes指出我根本不需要解析日期。在这种情况下,他的解决方案可能更好,如下所示:
client_df = pd.read_excel(
client_file,
header = 1,
converters = {'Event Date': lambda x: x.strftime('%Y-%m-%d')}
)
converters={'Event Date': lambda x: x.strftime('%Y-%m-%d')}
,但不要设置parse_dates。 - FObersteinerparse_dates
很有用(顺便提一下,对于pd.read_csv也存在该kwarg,通常在那里更有用)。关键是pandas仅使用其他软件包来实际解码Excel文件(例如openpyxl)。该代码将Excel序列日期转换为Python datetime。然后,pandas将其转换为内置的datetime dtype - 除非您设置转换器以拦截它... - FObersteiner