Python ';str';对象没有属性';地图';
我想用Python ';str';对象没有属性';地图';,python,python-3.x,pandas,Python,Python 3.x,Pandas,我想用1替换汽油,用0替换柴油,但无法做到这一点,出现以下错误: AttributeError:str对象没有属性map 代码: 试试这个:- carprice['fueltype']=carprice['fueltype'].map({'gas':1,'diesel':0}) 或者你可以 carprice['fueltype']=carprice['fueltype'].apply(lambda x: 1 if x =='gas' else 0)) Map基本上在系列上运行,而apply在
1
替换汽油,用0
替换柴油,但无法做到这一点,出现以下错误:
AttributeError:str
对象没有属性map
代码:
试试这个:-
carprice['fueltype']=carprice['fueltype'].map({'gas':1,'diesel':0})
或者你可以
carprice['fueltype']=carprice['fueltype'].apply(lambda x: 1 if x =='gas' else 0))
Map基本上在系列上运行,而apply在每个单元格上运行 如果列是数据帧类型而不是序列,则带有in“apply”的Map函数可以正常工作。
若要将列从series转换为dataframe,请在“[]”中将其括起来
carprice[['fueltype']]=carprice[['fueltype']].apply(lambda x: x.map({'gas':1,'diesel':0}))
用于将序列中的每个值替换为另一个值,该值可以从函数、dict或序列中派生
但是,当您应用lambda函数并尝试映射列的值时,它将其作为字符串而不是序列
因此,要把它看作系列,你必须把柱子包围在下面的方括号中:
carprice['fueltype'] = carprice['fueltype'] \
.apply(lambda x: x.map({'gas':1,'diesel':0}))
或者,您可以在不使用lambda函数的情况下按如下方式使用它:
varlist = ['fueltype']
def binary_map(x):
return x.map({'gas':1,'diesel':0})
carprice[varlist] = carprice[varlist].apply(binary_map)
这两种方法都非常有效
唯一需要注意的是,我们应该将一个系列传递给map函数。您可以这样做
df['Response']=df['Response'].应用(λx:1如果x=='Yes'或x=='Yes'否则为0如果x=='No'或x=='No'否则为0.5))
或
df['Response']=df['Response'].map({'Yes':1,'No':0,'Maybe':0.5,'Yes':1,'No':0,'Maybe':0.5})
如何使其不区分大小写,就像某些行中的'fueltype'可能是'Gas'或'Diesel'
carprice['fueltype'] = carprice['fueltype'] \
.apply(lambda x: x.map({'gas':1,'diesel':0}))
varlist = ['fueltype']
def binary_map(x):
return x.map({'gas':1,'diesel':0})
carprice[varlist] = carprice[varlist].apply(binary_map)