Получите длину кадра данных, как он отображается в Excel (например, включая любые уровни столбцов) - PullRequest
0 голосов
/ 29 июня 2018

РЕДАКТИРОВАТЬ: По существу, мне нужен метод, совместимый с одноуровневыми индексами столбцов и столбцами MultiIndex, который будет возвращать целое число уровней в столбцах.

Я записываю несколько фреймов данных в Excel на одном листе и хотел бы переместить start_row, чтобы избежать перезаписи любых данных.

import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(10, 4), columns=[list('ABCD'), list('EFGH')])
print(len(df)

len(df) вернет 10; как я могу также включить уровни индекса, чтобы возвращаемое значение было 12?

len(df.columns.levels) будет работать, только если столбцы являются многоиндексными. Это относится к некоторым моим фреймам данных, но не ко всем. Они представляют собой смесь одноуровневого и многоиндексного.

Является ли блок try except лучшим подходом (перехват AtrributeError для одноуровневых фреймов данных) или есть более элегантный способ?

1 Ответ

0 голосов
/ 29 июня 2018

В документации MultiIndex упоминается атрибут nlevels , который вы можете использовать.

import pandas as pd
import numpy as np
df1 = pd.DataFrame(np.random.randn(10, 4), columns=[list('ABCD'), list('EFGH')])
print(df1.columns)
print(df1.columns.nlevels)
df2 = pd.DataFrame(np.random.randn(10, 4), columns=['A','B','C','D'])
print(df2.columns)
print(df2.columns.nlevels)

дает

MultiIndex(levels=[['A', 'B', 'C', 'D'], ['E', 'F', 'G', 'H']],
       labels=[[0, 1, 2, 3], [0, 1, 2, 3]])
2
Index(['A', 'B', 'C', 'D'], dtype='object')
1

, который должен ответить на ваш вопрос о количестве линий для перемещения.

...