我有这个Pandas DataFrame
Index 1 2 3 4 5
0 1 1 0 0 0
我要替换它:
Index 1 2
0 pos1 pos2
我看到了一个类似的问题,但是使用了“ ix”,已弃用的解决方案或仅将值替换为标头
答案 0 :(得分:0)
一种选择是使用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')