Заменить значения в Pandas DataFrame на значения, основанные на заголовках - PullRequest
0 голосов
/ 14 октября 2018

У меня есть этот Pandas DataFrame

Index 1  2  3  4  5
    0 1  1  0  0  0

Я хочу заменить его:

Index 1     2
    0 pos1  pos2

Я видел похожий вопрос, но использую "ix", устаревшие решения илизаменяйте значения только заголовками

1 Ответ

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

Один из вариантов - использовать replace и add_prefix:

df.replace({k: 1 for k in df.columns}, 
           {k: v for k, v in zip(df.columns, df.add_prefix('pos').columns.values)})

В качестве альтернативы, вы можете использовать apply и заменить 1 значения на pos + .name свойство этогозапись (которая в данном случае эквивалентна имени столбца):

df.apply(lambda row: [f"pos{row.name}" if x == 1 else x for x in row], axis=0)

Вывод (для обоих подходов):

          1     2  3  4  5
Index                     
0      pos1  pos2  0  0  0

Данные:

df = pd.DataFrame([{'1': 1, '2': 1, '3': 0, '4': 0, '5': 0}]).rename_axis('Index')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...