Я столкнулся с интересной проблемой.У меня есть набор данных с тремя столбцами с датами, которые хранятся в виде целых чисел в формате ГГГГММ.Сначала я попытался преобразовать их в дату и время, но некоторые даты выходят за нижнюю границу 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] в моем фрейме данных может вызвать эту проблему и как я могу ее исправить?