更改日期熊猫

时间:2020-11-08 13:45:32

标签: python pandas dataframe

你好,我是熊猫的初学者,我有一个问题,我的csv文件包含日期“ 2019年9月19日” 我尝试将其从对象更改为字符串,我很困惑,因为日期上的逗号是我的代码,警告是 ValueError: time data 'September 9, 2019' does not match format '%B-%d-%Y'

d_parser = lambda x: pd.datetime.strptime(x,'%B-%d-%Y')
df = pd.read_csv('netflix_titles.csv',parse_dates=['date_added'],date_parser=d_parser )

2 个答案:

答案 0 :(得分:0)

我建议您使用pd.to_datetime()代替date_parser参数。

df = pd.read_csv('netflix_titles.csv')
df['date_added'] = pd.to_datetime(df['date_added'],infer_datetime_format = True)

在您的示例中,它工作正常:

example = 'September 9, 2019'
pd.to_datetime(example,infer_datetime_format=True)

输出:

2019-09-09 00:00:00

答案 1 :(得分:0)

我的答案更多是告诉您代码为什么不起作用,而不是告诉您其他人已经说过的更好的方法。

更仔细地阅读错误消息。您告诉函数您的格式将为“ September-9-2019”,但输入的格式为“ September 9,2019”。尝试从以下位置更改解析器,

d_parser = lambda x: pd.datetime.strptime(x,'%B-%d-%Y')

收件人

d_parser = lambda x: pd.datetime.strptime(x,'%B %d, %Y')

我尝试的简单代码:

import pandas as pd

df = pd.DataFrame(['September 9, 2019'], columns=['date'])
parser = lambda x: pd.datetime.strptime(x,'%B %d, %Y')
parser(df.iloc[0][0])

输出:

datetime.datetime(2019,9,9,0,0)