我试图将熊猫数据框的分类列重新编码为更明智的分类列。
为简单起见,我将使用“ 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)