我有一个csv文件,其中包含日期列(D / M / Y格式),我想将其转换为天列。我使用了以下方法:
In [1]: import numpy as np
import pandas as pd
from pandas import Series, DataFrame
#f = pd.read_csv(".some_file.csv")
In [2]: f=pd.DataFrame([['1/1/2013', 400, 1000]['2/1/2013', 500, 3000]], columns=['date','flights','distance'])
f['date']=pd.to_datetime(f['date'], format='%d/%m/%y',errors='ignore')
f['day']=f['date'].dt.weekday_name
我期待日栏。它是第一次出现,我也使用了这张桌子。但是,清除内核后,我得到的日期是NaT,天是NaN。从那以后的日子就没出现了。 我做错什么了吗?如果是,那么第一次是如何出现的?
感谢您的阅读。任何帮助将不胜感激。
PS CSV具有超过33万行。我必须为每个日期指定日期。
答案 0 :(得分:0)
问题是您没有正确指定datetime
格式,并且通过设置errors='ignore'
隐藏了错误。全年需要'%Y'
(请参阅Python's strftime
directives):
f['date'] = pd.to_datetime(f['date'], format='%d/%m/%Y', errors='coerce')
errors='coerce'
将为不可转换的日期提供NaN
。或者,要引发错误,只需完全忽略errors
参数。
对于此类问题,最好查看f.dtypes
以查看您的类型转换是否成功。例如,您应该请参见:
print(f['date'].dtype)
# datetime64[ns]
您应该不要看到:
print(f['date'].dtype)
# object