Сбой ядра Jupyter при запросе к фрейму данных с типом данных Period - PullRequest
0 голосов
/ 20 сентября 2019

Я столкнулся с интересной проблемой.У меня есть набор данных с тремя столбцами с датами, которые хранятся в виде целых чисел в формате ГГГГММ.Сначала я попытался преобразовать их в дату и время, но некоторые даты выходят за нижнюю границу 1677-09-21 для типа данных datetime.Поэтому я использовал обходной путь в документации как таковой:

def conv(x):
    return pd.Period( year=x // 10000, month=x // 100 % 100, day=x % 100, freq='D' )

# First, append '01' to create format YYYYMMDD, then apply conversion function
columns = ['indep_date', 'cow_system_ind_date', 'gw_system_ind_date']
for column in columns:
   icow[column] = ( icow[column].astype('str') + '01' ).astype('int').apply(conv)

Все это прекрасно работает.Однако после применения этой функции я больше не могу делать выбор моего фрейма данных, опрашивая любые столбцы.Если я попробую что-нибудь из этого, произойдет сбой ядра Jupyter:

icow.query( 'column != 200' )
icow[ icow['col1'] != icow['col2'] ]
icow[ icow['col1'].ne( icow['col2'] ) ]

Я пробовал множество других методов, но все они приводили к сбою и перезапуску ядра.Интересно то, что если я просто запускаю внутреннюю часть, она работает нормально.Например:

icow['col1'] != icow['col2']

правильно возвращает серию значений True / False.Как только я заверну его, чтобы попытаться вернуть выделенный фрагмент данных, произойдет сбой.

Если я опущу столбцы периода [D] (или пропущу преобразование), мои запросы будут работать нормально.Кто-нибудь знает, почему наличие этих типов данных period [D] в моем фрейме данных может вызвать эту проблему и как я могу ее исправить?

1 Ответ

0 голосов
/ 20 сентября 2019

Решено: Проблема в том, что в одном из трех столбцов даты содержалось количество записей с -9 в исходном наборе данных.Интересно отметить, что функция преобразования строковых представлений в Period не потерпела неудачу, но она каким-то образом повредила фрейм данных, из-за чего запросы к любому столбцу вызвали сбой ядра.При установке даты -9 в далекую дату 0001-01-01 все работает правильно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...