Множественное индексирование подмножества подмножества данных панд
Первая проблема здесь – ошибка в 0.12, но была зафиксирована в 0.13.0rc1. Вторая проблема здесь не исправлена и, по крайней мере, является несогласованностью.
Эти два сценария работают нормально:
a = DataFrame(np.zeros((2, 2), dtype=float),columns=[['a', 'B'],[1, 2]]) b = DataFrame(np.zeros((2, 2), dtype=float),columns=[['a', 'B']]) b[['a']]=a[['a']]
а также
a = DataFrame(np.zeros((2, 2), dtype=float),columns=[['a', 'b'],[1, 2]]) b = DataFrame(np.zeros((2, 2), dtype=float),columns=[['a', 'b'],[1, 2]]) b[['a']]=a[['a']]
Однако,
a = DataFrame(np.zeros((2, 2), dtype=float),columns=[['a', 'B'],[1, 2]]) b = DataFrame(np.zeros((2, 2), dtype=float),columns=[['a', 'B'],[1, 2]]) b[['a']]=a[['a']]
генерирует AttributeError: _ref_locs
Аналогичная ситуация с:
b = DataFrame(np.zeros((2, 2)),columns=[['a', 'c'],[1,2]]) b.drop('a', axis=1)
отлично работает, но
b = DataFrame(np.zeros((2, 2)),columns=[['a', 'C'],[1,2]]) b.drop('a', axis=1)
дает AttributeError: объект FrozenNDArray не имеет атрибута 'start'
- Преобразование группы pandas по объекту в мультииндексированный Dataframe
- Конкатенация данных Pandas DataFrames с колонками Multiindex и нерегулярными метками времени
- Python Pandas нарезает мультииндекс индексом второго уровня (или любым другим уровнем)
- Pandas: многоиндексная нарезка второго уровня целым числом
- назначение pandas multiindex из другого фрейма данных
Поскольку вы не указали, вы, вероятно, используете pandas <= 0,12
Это работает в 0.13rc1 (окончательный выпуск скоро), и был ошибкой в 0.12
Вы пример сверху (с помощью позиционных ссылок для ясности)
In [3]: a = DataFrame(np.arange(0,4).reshape((2,2)),columns=[['a', 'B'],[1, 2]]) In [4]: b = DataFrame(np.arange(4,8).reshape((2,2)),columns=[['a', 'B'],[1, 2]]) In [5]: a Out[5]: a B 1 2 0 0 1 1 2 3 [2 rows x 2 columns] In [6]: b Out[6]: a B 1 2 0 4 5 1 6 7 [2 rows x 2 columns] In [7]: b[['a']] = a[['a']] In [8]: b Out[8]: a B 1 2 0 0 5 1 2 7 [2 rows x 2 columns]
Вторая часть не является ошибкой; скорее вы не указываете метку полностью (вы указываете только одноуровневый), вместо этого вам нужно указать полную метку (через кортеж):
In [12]: b = DataFrame(np.zeros((2, 2)),columns=[['a', 'C'],[1,2]]) In [13]: b.drop([('a',1)],axis=1) Out[13]: C 2 0 0 1 0 [2 rows x 1 columns]
- Python, помнящий путь по умолчанию для файлов
- Завершение основного цикла GTK + в приложении MDI Python
- pandas: сводная таблица внутри многоуровневой информационной рамки
- подзаголовки из мультииндекса pandas dataframe, сгруппированные по уровню
- Строки MultiIndexing против столбцов в pandas DataFrame
- Использование булевской индексации для строки и столбца MultiIndex в Pandas
- Добавьте два мультииндексированных блока данных панд
- Запись многоиндексных данных в файл excel с помощью Python / Pandas
- Python Pandas – проблема с несколькими индексами Dataframes
- DataFrame.index.levels показывает «дополнительные» значения после обработки данных
- Назначить новые значения срезу из MultiIndex DataFrame