之前用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, :]