如何在转换timedelta变量时消除pandas中的错误?
How to remove the error in pandas while converting timedelta variable?
我有一个 pandas 代码并处理大量数据文件。我使用以下代码将时间增量转换为日期时间索引。
df['date_time'] = ["2016-05-19 08:25:00","2016-05-19 16:00:00","2016-05-20 07:45:00","2016-05-24 12:50:00","2016-05-25 23:00:00","2016-05-26 19:45:00"]
df['date_time'] = pd.DatetimeIndex(df['date_time'])
但是一个特定的数据文件给我错误:
raise e
ValueError: Unknown string format
此错误背后的原因可能是什么?如果是由于数据文件中的数据无效,如何删除?
我认为你需要参数 errors='coerce'
将非日期时间转换为 to_datetime
中的 NaT
:
df['date_time'] = pd.to_datetime(df['date_time'], errors='coerce')
然后如果需要删除带有 NaT
的所有行,请使用 dropna
:
df = df.dropna(subset=['date_time'])
样本:
a = ["2016-05-19 08:25:00","2016-05-19 16:00:00","2016-05-20 07:45:00",
"2016-05-24 12:50:00","2016-05-25 23:00:00","aaa"]
df = pd.DataFrame({'date_time':a})
print (df)
date_time
0 2016-05-19 08:25:00
1 2016-05-19 16:00:00
2 2016-05-20 07:45:00
3 2016-05-24 12:50:00
4 2016-05-25 23:00:00
5 aaa
df['date_time'] = pd.to_datetime(df['date_time'], errors='coerce')
print (df)
date_time
0 2016-05-19 08:25:00
1 2016-05-19 16:00:00
2 2016-05-20 07:45:00
3 2016-05-24 12:50:00
4 2016-05-25 23:00:00
5 NaT
df = df.dropna(subset=['date_time'])
print (df)
date_time
0 2016-05-19 08:25:00
1 2016-05-19 16:00:00
2 2016-05-20 07:45:00
3 2016-05-24 12:50:00
4 2016-05-25 23:00:00
我有一个 pandas 代码并处理大量数据文件。我使用以下代码将时间增量转换为日期时间索引。
df['date_time'] = ["2016-05-19 08:25:00","2016-05-19 16:00:00","2016-05-20 07:45:00","2016-05-24 12:50:00","2016-05-25 23:00:00","2016-05-26 19:45:00"]
df['date_time'] = pd.DatetimeIndex(df['date_time'])
但是一个特定的数据文件给我错误:
raise e
ValueError: Unknown string format
此错误背后的原因可能是什么?如果是由于数据文件中的数据无效,如何删除?
我认为你需要参数 errors='coerce'
将非日期时间转换为 to_datetime
中的 NaT
:
df['date_time'] = pd.to_datetime(df['date_time'], errors='coerce')
然后如果需要删除带有 NaT
的所有行,请使用 dropna
:
df = df.dropna(subset=['date_time'])
样本:
a = ["2016-05-19 08:25:00","2016-05-19 16:00:00","2016-05-20 07:45:00",
"2016-05-24 12:50:00","2016-05-25 23:00:00","aaa"]
df = pd.DataFrame({'date_time':a})
print (df)
date_time
0 2016-05-19 08:25:00
1 2016-05-19 16:00:00
2 2016-05-20 07:45:00
3 2016-05-24 12:50:00
4 2016-05-25 23:00:00
5 aaa
df['date_time'] = pd.to_datetime(df['date_time'], errors='coerce')
print (df)
date_time
0 2016-05-19 08:25:00
1 2016-05-19 16:00:00
2 2016-05-20 07:45:00
3 2016-05-24 12:50:00
4 2016-05-25 23:00:00
5 NaT
df = df.dropna(subset=['date_time'])
print (df)
date_time
0 2016-05-19 08:25:00
1 2016-05-19 16:00:00
2 2016-05-20 07:45:00
3 2016-05-24 12:50:00
4 2016-05-25 23:00:00