我从我的 csv 文件中提取了下表
Date,Time,CO2(ppm),CellTemp(c),CellPres(kPa)
10/08/2016,13:21:11,356.89,51.07,99.91
10/08/2016,13:21:12,356.89,51.07,99.91
10/08/2016,13:21:13,356.83,51.07,99.91
我研究了最近几天并尝试了不同的方法让 pandas 将 Date
和 Time
列读取为 datetime
,但我只是做不到。以下是我尝试过的一些方法:
df = pd.read_csv(myfile)
print(df.dtypes)
我得到:
Date object
Time object
CO2(ppm) object
CellTemp(c) object
CellPres(kPa) object
dtype: object
当我尝试时:
df_2 = pd.read_csv(file, parse_dates=[['Date', 'Time']])
print(df_2.dtypes)
我明白了
Date_Time object
CO2(ppm) object
CellTemp(c) object
CellPres(kPa) object
dtype: object
所以,现在 Date
和 Time
在一列中 (11/08/2016 14:06:18
)(我想要的),但未识别为 datetime
。
当我尝试时:
pd.to_datetime(df_2['Date_Time'], format='%d/%m/%Y %H:%M:%S)
我收到错误信息:
File "<ipython-input-31-ace4ed1a0aa9>", line 1
pd.to_datetime(df_2['Date_Time'],format='%d/%m/%Y %H:%M:%S
SyntaxError: EOL while scanning string literal
当我尝试时:
import dateutil.parser
dateutil.parser.parse(df_2['Date_Time'])
我得到(除了一些其他输出)错误信息:
AttributeError: 'Series' object has no attribute 'read'
我还在 Excel 中手动将日期格式更改为 yyyy-mm-dd
并尝试了相同的操作但没有任何更好的结果。我有点认为这一定是我犯的一个非常基本的错误,我是脚本编写的新手,希望得到任何帮助。如果我的问题有格式错误,请道歉我真的试过了。
最佳答案
看起来有一些错误的日期时间或某些值无法转换为日期时间,因此您可以在to_datetime
中添加参数errors='coerce'
将它们转换为 NaT
:
#31.11. does not exist
print (df_2)
Date_Time CO2(ppm) CellTemp(c) CellPres(kPa)
0 10/08/2016 13:21:11 356.89 51.07 99.91
1 10/08/2016 13:21:12 356.89 51.07 99.91
2 31/11/2016 13:21:13 356.83 51.07 99.91
df_2['Date_Time'] = pd.to_datetime(df_2['Date_Time'],
format='%d/%m/%Y %H:%M:%S',
errors='coerce')
print (df_2)
Date_Time CO2(ppm) CellTemp(c) CellPres(kPa)
0 2016-08-10 13:21:11 356.89 51.07 99.91
1 2016-08-10 13:21:12 356.89 51.07 99.91
2 NaT 356.83 51.07 99.91
您还可以通过以下方式检查所有有问题的值:
print (df_2[pd.to_datetime(df_2['Date_Time'],format='%d/%m/%Y %H:%M:%S', errors='coerce').isnull()])
Date_Time CO2(ppm) CellTemp(c) CellPres(kPa)
2 31/11/2016 13:21:13 356.83 51.07 99.91
关于python - pd.to_datetime 或解析日期时间不适用于我的 csv 文件(格式 : dd/mm/yyyy, hh:mm:ss),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38968811/