首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >转换熊猫python数据帧列值

转换熊猫python数据帧列值
EN

Stack Overflow用户
提问于 2016-10-07 23:36:34
回答 3查看 179关注 0票数 0

我有一列正数和负数,我想把它转换成0和1的列表。如果数字为正,则应用1替换。如果数字为负数或0,则应用0替换。我该怎么做?

例如,在R中,我会:

代码语言:javascript
运行
复制
list = ifelse(list > 0, 1, 0)
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-10-07 23:41:47

您可以返回boolean值,并使用astype(int)将它们转换为10

代码语言:javascript
运行
复制
print((df['A'] > 0).astype(int))

示例:

代码语言:javascript
运行
复制
df = pd.DataFrame({'A': [1,-1,2,-2,3,-3]})
print(df)
A
0  1
1 -1
2  2
3 -2
4  3
5 -3
print((df['A'] > 0).astype(int))
0    1
1    0
2    1
3    0
4    1
5    0
票数 1
EN

Stack Overflow用户

发布于 2016-10-07 23:40:18

可以使用索引器和.loc来更改这样的值

代码语言:javascript
运行
复制
 indexer = df[df['col']>0].index
 df.loc[indexer] = 1

  indexer_2 = df[df['col']<0].index
  df.loc[indexer_2] = 0

或者你可以看看numpy.where这样的

代码语言:javascript
运行
复制
import numpy as np
import pandas as pd
pd.DataFrame(np.where(df>0,1,0),index=df.index)
票数 0
EN

Stack Overflow用户

发布于 2016-10-08 00:13:52

可以使用DataFrame.apply对DataFrame的每一行应用函数。例如:

代码语言:javascript
运行
复制
import numpy as np
import pandas as pd
df = pd.DataFrame({'A': [1, -2, 3, -4]})
df['A'] = df.apply(lambda row:np.where(row['A'] > 0, 1, 0), axis=1)

可以将lambda函数替换为任何函数(不必是lambda),而axis=1是将该函数应用于每一行而不是每一列。

http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.apply.html

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39927141

复制
相关文章

相似问题

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