Python 在循环中转换数据帧值
要将Python 在循环中转换数据帧值,python,pandas,Python,Pandas,要将n、y和?中具有object值的数据帧转换为0、1和0 下面是df.head(): df.head() 党的婴儿水预算医生萨尔瓦多宗教卫星援助导弹移民合成燃料教育超级基金犯罪免税出口eaa\U rsa 0共和党人,是吗?y y y n y 1共和党人是不是? 2民主党人?是吗?是的,是的,是的 3民主党人n y n?是的,是的,是的 4民主党人是吗?y y y y 我尝试使用一个简单的for循环: 对于df.columns.values中的名称: replace(('n','y'),(0,
n
、y
和?
中具有object
值的数据帧转换为0
、1
和0
下面是df.head()
:
df.head()
党的婴儿水预算医生萨尔瓦多宗教卫星援助导弹移民合成燃料教育超级基金犯罪免税出口eaa\U rsa
0共和党人,是吗?y y y n y
1共和党人是不是?
2民主党人?是吗?是的,是的,是的
3民主党人n y n?是的,是的,是的
4民主党人是吗?y y y y
我尝试使用一个简单的for
循环:
对于df.columns.values中的名称:
replace(('n','y'),(0,1),inplace=True)
df.names.replace('?',0,inplace=True)
但它返回给我一个AttributeError:“DataFrame”对象没有属性“names”
请与我分享将对象
值转换为int
值的任何想法。我认为您可以在不使用的情况下使用
:
df = df.replace(('n','?','y'), (0,0,1))
#alternative
df = df.replace({'n':0,'?':0,'y':1})
通常不建议使用
in place
:
熊猫核心团队不鼓励使用inplace参数,最终它将被弃用(这意味着“计划从库中删除”)。原因如下:
inplace在方法链中不起作用。使用inplace通常不会阻止创建副本,这与名称的含义相反。
删除inplace选项将降低pandas代码库的复杂性 在您的代码中,
names
是列名,您只想替换此列的值:
df.names.replace
错误表示没有列名称
:
AttributeError:“DataFrame”对象没有属性“names”
df.names.replace