我正在尝试使用以下代码重命名数据框列-
function _process_col(df)
for col in names(df)
print(col)
rename!(df, :col => _clean_col_name(col))
end
return df
end
Run Code Online (Sandbox Code Playgroud)
但会引发错误,表明数据框中不存在 col。rename!(df, :col => _clean_col_name(col))将 col 视为字符串而不是变量。
note -_clean_col_name(col)是处理列名称的自定义函数
有什么替代方法可以做到这一点吗?
如果您想应用于_clean_col_name所有列,请使用以下形式:
julia> using DataFrames\n\njulia> df = DataFrame(rand(3, 5), :auto)\n3\xc3\x975 DataFrame\n Row \xe2\x94\x82 x1 x2 x3 x4 x5\n \xe2\x94\x82 Float64 Float64 Float64 Float64 Float64\n\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xbc\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\n 1 \xe2\x94\x82 0.0856504 0.677317 0.8402 0.630016 0.815347\n 2 \xe2\x94\x82 0.584487 0.997837 0.252574 0.659241 0.0699587\n 3 \xe2\x94\x82 0.196169 0.488646 0.689678 0.554855 0.321897\n\njulia> _clean_col_name(x) = uppercase(x)\n_clean_col_name (generic function with 1 method)\n\njulia> rename!(_clean_col_name, df)\n3\xc3\x975 DataFrame\n Row \xe2\x94\x82 X1 X2 X3 X4 X5\n \xe2\x94\x82 Float64 Float64 Float64 Float64 Float64\n\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xbc\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\n 1 \xe2\x94\x82 0.0856504 0.677317 0.8402 0.630016 0.815347\n 2 \xe2\x94\x82 0.584487 0.997837 0.252574 0.659241 0.0699587\n 3 \xe2\x94\x82 0.196169 0.488646 0.689678 0.554855 0.321897\nRun Code Online (Sandbox Code Playgroud)\n如果你想坚持你的功能,只需删除:前面的内容,col就像@BatWannaBe建议的那样:
julia> function _process_col(df)\n for col in names(df)\n print(col)\n rename!(df, col => _clean_col_name(col))\n end\n return df\n end\n_process_col (generic function with 1 method)\n\njulia> df = DataFrame(rand(3, 5), :auto)\n3\xc3\x975 DataFrame\n Row \xe2\x94\x82 x1 x2 x3 x4 x5\n \xe2\x94\x82 Float64 Float64 Float64 Float64 Float64\n\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xbc\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\n 1 \xe2\x94\x82 0.445679 0.0197894 0.605917 0.668544 0.979025\n 2 \xe2\x94\x82 0.631891 0.185474 0.136334 0.218718 0.365156\n 3 \xe2\x94\x82 0.115752 0.308683 0.273192 0.638987 0.195281\n\njulia> _process_col(df)\nx1x2x3x4x53\xc3\x975 DataFrame\n Row \xe2\x94\x82 X1 X2 X3 X4 X5\n \xe2\x94\x82 Float64 Float64 Float64 Float64 Float64\n\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xbc\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\n 1 \xe2\x94\x82 0.445679 0.0197894 0.605917 0.668544 0.979025\n 2 \xe2\x94\x82 0.631891 0.185474 0.136334 0.218718 0.365156\n 3 \xe2\x94\x82 0.115752 0.308683 0.273192 0.638987 0.195281\nRun Code Online (Sandbox Code Playgroud)\n请检查 的文档字符串rename!以查看其他可用选项(因为还有更多选项),仅举一个示例:
julia> df = DataFrame(rand(3, 5), :auto)\n3\xc3\x975 DataFrame\n Row \xe2\x94\x82 x1 x2 x3 x4 x5\n \xe2\x94\x82 Float64 Float64 Float64 Float64 Float64\n\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xbc\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\n 1 \xe2\x94\x82 0.242173 0.0401673 0.674665 0.27598 0.338189\n 2 \xe2\x94\x82 0.0497058 0.958139 0.707002 0.258894 0.623699\n 3 \xe2\x94\x82 0.477812 0.5068 0.584878 0.198547 0.713736\n\njulia> rename!(df, (names(df) .=> _clean_col_name.(names(df)))...)\n3\xc3\x975 DataFrame\n Row \xe2\x94\x82 X1 X2 X3 X4 X5\n \xe2\x94\x82 Float64 Float64 Float64 Float64 Float64\n\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xbc\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\n 1 \xe2\x94\x82 0.242173 0.0401673 0.674665 0.27598 0.338189\n 2 \xe2\x94\x82 0.0497058 0.958139 0.707002 0.258894 0.623699\n 3 \xe2\x94\x82 0.477812 0.5068 0.584878 0.198547 0.713736\nRun Code Online (Sandbox Code Playgroud)\n
function _process_col(df)
array = [];
for col in names(df)
push!(array,_clean_col_name(col))
end
rename!(df, Symbol.(array))
return df
end
Run Code Online (Sandbox Code Playgroud)
其中array是适合您的情况的列的新名称列表。
| 归档时间: |
|
| 查看次数: |
701 次 |
| 最近记录: |