我有一个数据文件,看起来像这样:

我希望用列的名称替换范围A:D中的所有1,这样最后的结果应该类似于:

我怎么能这么做?
您可以使用以下内容重新创建我的数据文件:
dfz = pd.DataFrame({'A' : [1,0,0,1,0,0],
'B' : [1,0,0,1,0,1],
'C' : [1,0,0,1,3,1],
'D' : [1,0,0,1,0,0],
'E' : [22.0,15.0,None,10.,None,557.0]})发布于 2016-05-04 15:46:17
一种方法可以是使用replace并将一个Series映射列标签传递到值(在本例中是相同的标签):
>>> dfz.loc[:, 'A':'D'].replace(1, pd.Series(dfz.columns, dfz.columns))
A B C D
0 A B C D
1 0 0 0 0
2 0 0 0 0
3 A B C D
4 0 0 3 0
5 0 B C 0要使更改永久化,您可以将返回的DataFrame分配给dfz.loc[:, 'A':'D']。
撇开解决方案不说,记住在列中混合数字和字符串类型可能会损失很多性能好处,因为熊猫被迫使用通用的'object‘dtype来保存值。
https://stackoverflow.com/questions/37032043
复制相似问题