Как читать CSV с timedeltas и NaN? - PullRequest
0 голосов
/ 28 мая 2018

Я пытаюсь прочитать 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))

но так как у меня много столбцов иряды, это несколько медленно.Есть ли более правильный способ сделать это?

1 Ответ

0 голосов
/ 28 мая 2018
Объекты

timedelta не поддерживаются ни параметрами parse_dates, ни dtype в read_csv.Вот пара альтернатив.

apply + to_timedelta

df = df.apply(pd.to_timedelta, errors='coerce')

Или

for c in df.columns:
    df[c] = pd.to_timedelta(df[c], errors='coerce')

pd.read_csv(..., converters=...)

Другой вариант - пройти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)
...