将字符串标签转成int标签

之前用Python写过一个类似的工具,但是只能单列转换,很鸡肋,现在重新用Julia实现了一个类似功能,

先看看数据,是matlab的数据集NYCHousing2015[1:5, :]

 我们可以看到第二个特征和第三个特征都是标签类字符串。

function convert_columns_ju(df::DataFrame, columns_to_convert::Vector{String})
    # 创建一个空的DataFrame,用于存储转换后的数据
    int_df = DataFrame()

    # 使用字典动态地映射列名和整数值
    category_dict = Dict{String,Int}()

    # 遍历DataFrame的列
    for col in names(df)
        # 如果当前列在需要转换的列名列表中
        if in(col, columns_to_convert)
            # 获取当前列的唯一字符串类别
            categories = unique(df[!, col])

            # 为每个类别分配一个整数值,并存储到字典中
            for (idx, category) in enumerate(categories)
                if !haskey(category_dict, category)
                    category_dict[category] = idx
                end
            end

            # 将当前列中的字符串类别转换为整数,并存储到新的DataFrame中
            int_col = map(x -> category_dict[x], df[!, col])
            int_df[!, col] = int_col
        else
            # 如果当前列不在需要转换的列名列表中,直接复制该列到新的DataFrame中
            int_df[!, col] = df[!, col]
        end
    end

    return int_df
end

现在看一眼转换以后的数据,

NYCHousing2015_to = convert_columns_ju(
    NYCHousing2015, ["NEIGHBORHOOD", "BUILDINGCLASSCATEGORY"]
)
NYCHousing2015_to[1:5, :]

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值