你好,我是熊猫的初学者,我有一个问题,我的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 )
答案 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)