Панды: Как ссылаться на столбцы структуры: ('Имя', n) ('Имя', n + 1) - PullRequest
0 голосов
/ 10 декабря 2018

Мой код находит максимальное количество строк определенной строки столбца, используя регулярное выражение, а затем удаляет их.

df["MaxConfAll"] = df.filter(regex=("MaxConfDays.*")).max(axis=1)
drop_cols = list(df3.filter(regex=("MaxConfDays.*")))
df3 = df3.drop(drop_cols, axis=1)

Успешно находит и удаляет столбцы, подобные этим: ('MaxConfDays', 1) ('MaxConfDays', 2) ('MaxConfDays', 3) ... ('MaxConfDays', n)

Но если я попытаюсь сослаться на конкретный пример, он выдаст мне KeyError:

df["('MaxConfDays', 3)"] возвращает KeyError:

KeyError: "('MaxConfDays', 3)"

Кадр данных: ('MaxConfDays', 1) ('MaxConfDays', 2) ('MaxConfDays', 3) 2 0 NaN 0 NaN NaN 3 NaN NaN 0 NaN NaN 33 33 0

1 Ответ

0 голосов
/ 13 декабря 2018

Оказывается, что имена столбцов были кортежами, содержащими строку и целое число, являющееся результатом сводной диаграммы.То, что сработало, это замена имен столбцов, следуя слегка измененной версии последнего ответа в этом: Как изменить имя столбца с кортежа на строку?

Это пошло от кортежаof (str, int) -> 'string'

mydic = dict() 
for i,var in enumerate(df.columns):
    if isinstance(var, tuple): 
        mydic[var] = '{}_{}'.format(var[0], str(var[1]))
df.rename(columns = mydic, inplace=True)

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