将Pandas DataFrame中的值替换为基于标头的值

时间:2018-10-13 22:46:17

标签: python pandas dataframe

我有这个Pandas DataFrame

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

我要替换它:

Index 1     2
    0 pos1  pos2

我看到了一个类似的问题,但是使用了“ ix”,已弃用的解决方案或仅将值替换为标头

1 个答案:

答案 0 :(得分:0)

一种选择是使用replaceadd_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')