python手工将不为数值类型的列分为n类

x为二维数组数据

i为列号,每次将第i列铺开,把第i列的第一个 数据类型作为整列类型进行判断,如果是数字类型就跳过不处理

如果是非数字类型则添加到set去重,然后把set中的值按顺序用0~n-1进行替换,n为不同值的个数

for i in range(x.shape[1]):
    map_ = {}
    flatten_ = x[:, i].flatten()
    if isinstance(flatten_[0], numbers.Number):
        continue
    list_ = flatten_.tolist()
    set_ = set(list_)
    # n = len(set((x[:, i].flatten()).tolist()))
    j = 0
    for k in set_:
        map_[k] = j
        j = j + 1
    df[header[i]] = df[header[i]].map(map_)

你可能感兴趣的:(ML&DM,python,开发语言)