如何读取带有 timedeltas 和 NaN 的 csv?

jss*_*ssm 5 python csv timedelta pandas

我正在尝试读取如下所示的 csv 文件:

              col 1             col 2             col 3      ...     col N
0        0 days 00:00:16   0 days 00:00:07   0 days 00:01:02          NaN
.
.
.
15000    0 days 01:40:00         NaN               NaN       ...      NaN
Run Code Online (Sandbox Code Playgroud)

我尝试过的:

df = pd.read_csv('file.csv', sep=',', index_col=0, dtype=object)
df = df.applymap(lambda x: pd.to_timedelta(x))
Run Code Online (Sandbox Code Playgroud)

但由于我有很多列和行,所以速度有点慢。有更合适的方法来做到这一点吗?

cs9*_*s95 7

中的parse_dates或参数不支持 timedelta 对象。这里有几个替代方案。dtyperead_csv

applypd.to_timedelta

df = df.apply(pd.to_timedelta, errors='coerce')
Run Code Online (Sandbox Code Playgroud)

或者,

for c in df.columns:
    df[c] = pd.to_timedelta(df[c], errors='coerce')
Run Code Online (Sandbox Code Playgroud)

pd.read_csvconverters=论点

converters另一种选择是在加载时传递参数:

f = {i : pd.to_timedelta for i in range(N)}  # you can access columns by index
df = pd.read_csv('file.csv', sep=',', index_col=0, converters=f)
Run Code Online (Sandbox Code Playgroud)