Python 编码的目标列仅显示一个类别?

Python 编码的目标列仅显示一个类别?,python,pandas,dataframe,multilabel-classification,encoder,Python,Pandas,Dataframe,Multilabel Classification,Encoder,我正在研究多类分类问题。我的目标栏有4个等级,低,中,高和非常高。当我试图对它进行编码时,我只得到0作为值_counts()。我不确定,为什么 value count in original data frame is : High 18767 Very High 15856 Medium 9212 Low 5067 Name: physician_segment, dtype: int64 我尝试了以下方法对我的目标列进行编码: Usi

我正在研究多类分类问题。我的目标栏有4个等级,低,中,高和非常高。当我试图对它进行编码时,我只得到0作为值_counts()。我不确定,为什么

value count in original data frame is :
High         18767
Very High    15856
Medium        9212
Low           5067
Name: physician_segment, dtype: int64
我尝试了以下方法对我的目标列进行编码:

Using replace() method :

target_enc = {'Low':0,'Medium':1,'High':2,'Very High':3}
df1['physician_segment'] = df1['physician_segment'].astype(object)
df1['physician_segment'] = df1['physician_segment'].replace(target_enc)
df1['physician_segment'].value_counts()
0    48902
Name: physician_segment, dtype: int64

using factorize method():
from pandas.api.types import CategoricalDtype 
df1['physician_segment'] = df1['physician_segment'].factorize()[0]
df1['physician_segment'].value_counts()
0    48902
Name: physician_segment, dtype: int64

Using Label Encoder :
from sklearn import preprocessing
labelencoder= LabelEncoder() 
df1['physician_segment'] = labelencoder.fit_transform(df1['physician_segment']) df1['physician_segment'].value_counts()
0    48902
Name: physician_segment, dtype: int64
在所有这三种技术中,我只得到一个类作为0,数据帧的长度是48902

有人能指出我做错了什么吗。 我希望我的目标列的值为0、1、2、3

target_enc = {'Low':0,'Medium':1,'High':2,'Very High':3}
df1['physician_segment'] = df1['physician_segment'].astype(object)
之后,创建/定义一个函数:-

def func(val):
    if val in target_enc.keys():
        return target_enc[val]
最后使用
apply()
方法:-

df1['physician_segment']=df1['physician_segment'].apply(func)

现在,如果您打印
df1['medicine\u segment'].value\u counts()
您将获得正确的输出

谢谢@Anurag。你能详细说明一下我面临的问题吗?是因为编码技术没有应用到每一行吗?好的,
replace()