Python 将数据帧列值从字符串转换为二进制
我正在尝试将列中的字符串值转换为二进制值。例如,下表中的映射类似于{'cinema':0,'education':1} 我定义了一个小函数,如下所示-Python 将数据帧列值从字符串转换为二进制,python,pandas,Python,Pandas,我正在尝试将列中的字符串值转换为二进制值。例如,下表中的映射类似于{'cinema':0,'education':1} 我定义了一个小函数,如下所示- def numconv(a): return a.map({'education' : 1,'cinema' : 0}) 然后我使用了“apply”函数来更新数据框中的值- train_docs['Class'] = train_docs['Class'].apply(numconv) 但我得到的错误如下- def numconv(a):
def numconv(a):
return a.map({'education' : 1,'cinema' : 0})
然后我使用了“apply”函数来更新数据框中的值-
train_docs['Class'] = train_docs['Class'].apply(numconv)
但我得到的错误如下-
def numconv(a):
return a.map({'education' : 1,'cinema' : 0})
我在这里干什么?按照我的理解应该可以用。你可以用地图-
a = {'education' : 1,'cinema' : 0}
train_docs['Class'] = train_docs['Class'].map(a)
使用
时,应用pandas.Series的方法。给定函数应接受pandas.Series
所包含的内容,在本例中为str
s
def numconv(a):
return a.map({'education' : 1,'cinema' : 0})
如果a
为str
,则将不起作用,您可以通过更改为来修复它
def numconv(a):
return {'education' : 1,'cinema' : 0}[a]
或者在这种情况下,只需使用.replace
方法pandas.Series
就可以了
import pandas as pd
df = pd.DataFrame({"Class":["education","education","education","cinema","cinema"]})
df["Class"].replace({'education' : 1,'cinema' : 0},inplace=True)
print(df)
输出
Class
0 1
1 1
2 1
3 0
4 0
注意,如果出现任何其他值,我建议的函数将失败,而。replace
忽略未知值我认为map
是这里的解决方案。如果它是一个大数据帧,例如df['Class]=np。其中((df['Class'='education'),1,0)