首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何根据条件将熊猫数据中的值替换为列名?

如何根据条件将熊猫数据中的值替换为列名?
EN

Stack Overflow用户
提问于 2016-05-04 15:26:46
回答 4查看 13.2K关注 0票数 14

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

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

我怎么能这么做?

您可以使用以下内容重新创建我的数据文件:

代码语言:javascript
复制
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]})
EN

Stack Overflow用户

回答已采纳

发布于 2016-05-04 15:46:17

一种方法可以是使用replace并将一个Series映射列标签传递到值(在本例中是相同的标签):

代码语言:javascript
复制
>>> 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来保存值。

票数 16
EN
查看全部 4 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37032043

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档