我正在使用 读取来自外部数据源的 csv 文件pd.read_csv,如下面的代码所示:
pd.read_csv(
BytesIO(raw_data),
parse_dates=['dates'],
date_parser=np.datetime64,
)
Run Code Online (Sandbox Code Playgroud)
但是,在发送的 csv 中的某处,日期格式错误,导致以下错误:
ValueError: Error parsing datetime string "2015-08-2" at position 8
Run Code Online (Sandbox Code Playgroud)
这会导致整个应用程序崩溃。当然,我可以使用 try/except 处理这种情况,但是我将丢失该特定 csv 中的所有其他数据。我需要熊猫来保存和解析其他数据。
我无法预测这些数据(每天都在变化)的日期格式错误的时间/地点。有没有办法pd.read_csv只跳过日期错误的行,但仍然解析 csv 中的所有其他行?
在正在发送的 csv 中的某处,日期格式错误
np.datetime64需要ISO8601 格式的字符串才能正常工作。好消息是您可以包装np.datetime64自己的函数并将其用作date_parser:
def parse_date(v):
try:
return np.datetime64(v)
except:
# apply whatever remedies you deem appropriate
pass
return v
pd.read_csv(
...
date_parser=parse_date
)
Run Code Online (Sandbox Code Playgroud)
我需要熊猫来保存和解析其他数据。
我经常发现更灵活的日期解析器dateutil比np.datetime64没有额外功能的效果更好,甚至可以工作:
import dateutil
pd.read_csv(
BytesIO(raw_data),
parse_dates=['dates'],
date_parser=dateutil.parser.parse,
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2553 次 |
| 最近记录: |