Проблема в том, что некоторые значения в Birth Date
содержат хотя бы одну не разбираемую дату-время, поэтому read_csv
не выполняет синтаксический анализ столбца.
Вы можете проверить эти значения:
dates = pd.to_datetime(df['Birth Date'], errors='coerce')
print (df.loc[dates.isnull(), 'Birth Date'])
Другим решением является анализ этих проблемных значений на NaT
:
df['Birth Date'] = pd.to_datetime(df['Birth Date'], errors='coerce')
Я пытаюсь проверить, правильно ли 0
обработан NaT
:
import pandas as pd
temp=u"""Date,a
2017-04-03,0
2017-04-04,1
0,2
2017-04-06,3
2017-04-07,4
2017-04-08,5"""
#after testing replace 'pd.compat.StringIO(temp)' to 'filename.csv'
df = pd.read_csv(pd.compat.StringIO(temp), na_values = 0, parse_dates=['Date'])
print (df)
Date a
0 2017-04-03 NaN
1 2017-04-04 1.0
2 NaT 2.0
3 2017-04-06 3.0
4 2017-04-07 4.0
5 2017-04-08 5.0
print (df.dtypes)
Date datetime64[ns]
a float64
dtype: object
Если есть несколько не разбираемых значений:
import pandas as pd
temp=u"""Date,a
2017-04-03,0
string,1
0,2
2017-04-06,3
2017-04-07,4
2017-04-08,5"""
#after testing replace 'pd.compat.StringIO(temp)' to 'filename.csv'
df = pd.read_csv(pd.compat.StringIO(temp), na_values = [0, 'string'], parse_dates=['Date'])
print (df)
Date a
0 2017-04-03 NaN
1 NaT 1.0
2 NaT 2.0
3 2017-04-06 3.0
4 2017-04-07 4.0
5 2017-04-08 5.0
print (df.dtypes)
Date datetime64[ns]
a float64
dtype: object