Pandas:FutureWarning:改用 pd.to_datetime

问题描述

我正在使用 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:

改用 pd.to_datetime。

返回 generic_parser(date_parser,*date_cols)

我在某处读到 Pandas 正在弃用日期时间。

  • 谁能帮我转换 date_parser 表达式以使用 pd.to_datetime?

编辑:对于不清楚的地方深表歉意。 client_file 日期时间对象如下:

YYYY-MM-DD HH:MM:SS

我需要提取以下内容作为 str 对象:

YYYY-MM-DD

编辑:@jezrael 的回答(如下)完美运行 - 谢谢 jezrael!

client_df = pd.read_excel(
client_file,converters={'Event Date': lambda x: pd.to_datetime(x).strftime('%Y-%m-%d')}
)

编辑 2:@MrFuppes 指出我根本不需要解析日期。在这种情况下,他的解决方案可能更好,如下所示:

client_df = pd.read_excel(
client_file,converters = {'Event Date': lambda x: x.strftime('%Y-%m-%d')}
)

解决方法

使用Series.dt.strftime

client_df = pd.read_excel(
    client_file,header = 1,parse_dates = ['Event Date']
    )

client_df['Event Date'] = client_df['Event Date'].dt.strftime('%Y-%m-%d')

如果需要 read_excel 的解决方案,请使用 converters

client_df = pd.read_excel(
    client_file,parse_dates = ['Event Date'],converters={'Event Date': lambda x: pd.to_datetime(x).strftime('%Y-%m-%d')}
    )

另一个想法是只使用 strftime 像尖头@MrFuppes:

client_df = pd.read_excel(
    client_file,converters={'Event Date': lambda x: x.strftime('%Y-%m-%d')}
    )