У меня есть фрейм данных, df, со следующими столбцами:
id int64
quarter datetime64[ns]
decile int64
dtype: object
Когда я запускаю groupby,
df.groupby(['id', 'quarter'])
Я получаю следующую ошибку:
TypeError: only integer scalar arrays can be converted to a scalar index
Я думаю, что правильный вопрос таков: что вывод dtypes
не говорит мне, так что я могу фактически использовать мои int
и datetime
для индекса?
versions:
pandas: 0.25.1
python: sys.version_info(major=3, minor=7, micro=3, releaselevel='final', serial=0)
ДополнительноЗамечание по поводу ошибки: ошибка исчезнет, если я избегу переименования столбцов заранее. Успех переименования подтверждается при запуске метода dtypes
.
Наконец, вот еще один пример той же ошибки, возникающей после groupby
и переименования (в этом примере переименование глупо, но требуется, когда я включаю date
в свою агрегацию; я показываю только минимальноекод, необходимый для генерации ошибки)
# resample to quarterly
quart = df.groupby(
[pd.Grouper(key='id'),
pd.Grouper(key='date', freq='Q')]).agg({'call_qty':'sum'})
quart.columns = [['call_qty']] # << toggle this renaming code to trigger the error
F = quart['call_qty'].isna()
Генерирует ошибку:
TypeError: only integer scalar arrays can be converted to a scalar index
Спасибо всем, кто что-то знает об этом.