Преобразование столбца DataFrame String, содержащего пропущенные значения, в Date в Julia - PullRequest
2 голосов
/ 12 июня 2019

Я пытаюсь преобразовать столбец DataFrame String в формат Date в Julia, но если столбец содержит пропущенные значения, выдается ошибка:

ERROR: MethodError: no method matching Int64(::Missing)

Код, который я пытался запустить (которыйработает для столбцов без отсутствующих данных):

df_pp[:tod] = Date.(df_pp[:tod], DateFormat("d/m/y"));

Другие строки кода, которые я пробовал:

df_pp[:tod] = Date.(passmissing(df_pp[:tod]), DateFormat("d/m/y"));
df_pp[.!ismissing.(df_pp[:tod]), :tod] = Date.(df_pp[:tod], DateFormat("d/m/y"));

Код относится к столбцу с именем tod в данныхрамка с именем df_pp.Оба пакета DataFrames & Dates были загружены перед попыткой этого.

1 Ответ

1 голос
/ 12 июня 2019

passmissing путь

df_pp.tod = passmissing(x->Date(x, DateFormat("d/m/y"))).(df_pp.tod)

Что здесь происходит, так это: passmissing принимает функцию и возвращает новую функцию, которая обрабатывает missing s (возвращая missing). Внутри скобки в x->Date(x, DateFormat("d/m/y")) я определяю новую анонимную функцию, которая вызывает функцию Date с соответствующим DateFormat. Наконец, я использую функцию, возвращаемую passmissing сразу на df_pp.tod, используя . для трансляции по столбцу. Синтаксис легче увидеть, если я его разделю:

myDate(x) = Date(x, DateFormat("d/m/y"))
Date_accepting_missing = passmissing(myDate)
df_pp[:tod] = Date_accepting_missing.(df_pp[:tod])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...