Поиск соответствия в другом фрейме данных, затем переименование столбцов в соответствие - PullRequest
0 голосов
/ 02 октября 2018

У меня есть фрейм данных с набором тегов и тэгов, а также фрейм данных с именами столбцов по тэгам.Список тегов имеет длину 175 элементов, а список столбцов из входных данных - 60 элементовЯ хочу переименовать имена столбцов из тегов в tagname.Для этого я делаю следующее:

import pandas as pd

df_input = pd.read_excel(r'C://Users//..//*.xlsx')
df_tags = pd.read_excel(r'C://Users//..//*.xlsx')
old_names = df_input.columns
new_names = []
tag = df_tags.iloc[:][0]


for i in range(0,len(df_input.columns)):
    for j in range(0,len(df_tags)):
        if df_input.columns[i] == df_tags.iloc[j][0]:
            new_names.append(df_tags.loc[j][1])

df_input.rename(columns=dict(zip(old_names, new_names)), inplace=True)

Тем не менее, я получаю сообщение об ошибке вроде этого: KeyError: 'метка [122] отсутствует в [index]'

Я не понимаю, какая метка 122 индекса не найдена и как это исправить.Кто-нибудь может помочь?

1 Ответ

0 голосов
/ 02 октября 2018

pd.DataFrame.rename

Избегайте явных for петель с пандами.Вы можете использовать pd.DataFrame.rename с последовательным вводом:

df_input = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6], 'C': [7, 8, 9]})
df_tags = pd.DataFrame({'in_col': ['A', 'C', 'D'], 'out_col': ['X', 'Y', 'Z']})

df_input = df_input.rename(columns=df_tags.set_index('in_col')['out_col'])

print(df_input)

   X  B  Y
0  1  4  7
1  2  5  8
2  3  6  9

Метод rename универсален и мягок.Как описано в документации:

Значения функции / dict должны быть уникальными (1-к-1).Метки, не содержащиеся в dict / Series, останутся как есть.Дополнительные метки в списке не выдают ошибку.

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