使用子设置数据框重新编码分类列

时间:2019-08-15 05:48:28

标签: python pandas dataframe subset

我正在尝试将pandas数据框的分类列重新编码为更明智的分类列。

为简单起见,我将使用“ 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

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

1 个答案:

答案 0 :(得分:0)

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

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

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

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

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