Reputation: 342
I'm using Pandas to read a .xlsx file as follows:
client_df = pd.read_excel(
client_file,
header = 1,
parse_dates = ['Event Date'],
date_parser = lambda x: datetime.strftime(x, '%Y-%m-%d')
)
This works fine, but I'm getting this warning from 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)
I read somewhere that Pandas is deprecating datetime.
EDIT: apologies for the lack of clarity. The client_file datetime objects is as follows:
YYYY-MM-DD HH:MM:SS
I need to extract the following, as a str object:
YYYY-MM-DD
EDIT: @jezrael's answer (below) working perfectly - thank you 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')}
)
EDIT 2: @MrFuppes pointed out that I didn't need to parse dates at all. His solution is probably better in this instance, as follows:
client_df = pd.read_excel(
client_file,
header = 1,
converters = {'Event Date': lambda x: x.strftime('%Y-%m-%d')}
)
Upvotes: 5
Views: 13609
Reputation: 863146
Use 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')
If need solution with read_excel
use converters
:
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')}
)
Another idea is use only strftime
like pointed @MrFuppes:
client_df = pd.read_excel(
client_file,
header = 1,
parse_dates = ['Event Date'],
converters={'Event Date': lambda x: x.strftime('%Y-%m-%d')}
)
Upvotes: 3