如何只对数据集的特定列进行标记?

2024-10-05 10:44:21 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有一个这样的数据集,我只想对一个有字符串值的特定列进行编码。就像在下面提到的数组中,我只想标记一个[0][0],一个[0][1],一个[0][3],一个[0][4]。在

a = [[Andaman and Nicobar Islands, NICOBARS, 2000, Kharif, Arecanut, 1254.0, 2000.0]]

我尝试的是:

dataset = pd.read_csv('crop_production.csv')

from sklearn import preprocessing

le = preprocessing.LabelEncoder()
dataset = dataset.apply(le.fit_transform)

但它甚至可以编码数值。在

你知道如何只对csv的特定列进行编码吗?在

数据集示例:

^{pr2}$

Tags: andcsv数据字符串标记le编码数组
2条回答

在不提供(或不知道)列名的情况下,您可以使用以下更通用的方法:

# seperate categoricals from numericals
df_numeric = dataset.select_dtypes(exclude=['object'])
df_obj = dataset.select_dtypes(include=['object']).copy()

# now factorize categoricals
for c in df_obj:
    df_obj[c] = pd.factorize(df_obj[c])[0]

# merge back into one dataframe
df_final = pd.concat([df_numeric, df_obj], axis=1)
df_final.reset_index(inplace=True, drop=True)

考虑如下所示的示例数据帧

sample = pd.DataFrame()

sample['A'] = ['a', 'b', 'c', 'a']
sample['B'] = ['x', 'y', 'x', 'z']
sample['C'] = [1, 2, 3, 4]
sample['D'] = ['m', 'n', 'm', 'o']


# sample dataframe

    A   B   C   D
0   a   x   1   m
1   b   y   2   n
2   c   x   3   m
3   a   z   4   o

这里A、B和D列包含字符串,C列是数值。所以你想编码A,B和D,而不是C。要做到这一点,你可以制作一个特定于一列的编码器,并根据需要对该列进行enocde。请参见下面的代码。在

^{pr2}$

您可以轻松地将此代码扩展到您的特定问题。在

相关问题 更多 >

    热门问题