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