Python 如何使用TimeDelta和NaN读取csv?

Python 如何使用TimeDelta和NaN读取csv?,python,pandas,csv,timedelta,Python,Pandas,Csv,Timedelta,我正在尝试读取如下所示的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 我

我正在尝试读取如下所示的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
我所尝试的:

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

但由于我有很多列和行,所以速度有点慢。有没有更合适的方法

timedelta对象不受
read\u csv
中的
parse\u dates
dtype
参数的支持。这里有两种选择

使用
pd.to\u timedelta应用
或者


pd.read\u csv
转换器=
参数 另一个选项是在加载时传递
转换器
参数:

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)

在pandas.read\u csv中解析日期第一个解决方案非常好。我也喜欢第二行,但是,先验地,我不知道N的值。@JordiSalinasSanMartíN啊,你可以通过阅读第一行并计算逗号的数量,或者沿着这些行来绕过它。。。但是,这比它的价值更麻烦,所以如果第一种方法有效,你有我的许可使用它!
for c in df.columns:
    df[c] = pd.to_timedelta(df[c], errors='coerce')
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)