我试图将熊猫数据框的分类列重新编码为更明智的分类列。

为简单起见,我将使用“ Cabin”列中的钛酸数据。我正在尝试合并所有A10 A20 A22并将其重新编码为A,类似地将C10,C12编码为C,依此类推。

我已经尝试使用子集,这是我的代码。

for i in ['A','B','C']:
    for x in train[train.Cabin.str.contains(i)].loc[:,'Cabin'].index:
        train.loc[x,'Cabin'] = i



我正在寻找的是一种有效的方法。我是新手,我认为这不是正确的方法。请指导我。很抱歉,如果我违反了堆栈溢出的任何规则。

最佳答案

如果可能,请从列中提取第一个字母:

train.Cabin = train.Cabin.str[0]


或者,如果需要从列表中提取第一个匹配的值:

L = ['A','B','C']

pat = '|'.join(L)
train.Cabin = train.Cabin.str.extract('('+ pat + ')', expand=False)

10-04 23:22