dataframe - 替换 Julia 中多种数据类型数组的子字符串

标签 dataframe julia ijulia-notebook

我有一个从多个数据类型的 csv 导入的数组。 我想删除所有逗号 (,) 和美元符号 ($)。包含逗号和美元符号的三列。

在为带有逗号和美元符号的列创建新数组时,我可以使用以下方法成功完成。

using CSV, DataFrames
df = DataFrame!(CSV.File("F:SampleFile.csv"))
dfmo = Array(df[!,30])
dfmo = collect(skipmissing(dfmo))
dfmo = replace.(dfmo,"\$"=>"")
dfmo = replace.(dfmo,","=>"")

当尝试用下面的方法应用于整个向量时

df=replace.(df,","=>"")

我得到一个错误:

MethodError: no method matching similar(::Int64, ::Type{Any})
Closest candidates are:
  similar(!Matched::ZMQ.Message, ::Type{T}, !Matched::Tuple{Vararg{Int64,N}} where N) where T at C:\Users\

然后我尝试使用下面的索引,但在索引到字符串时也出现错误。

for i in df
    for j in df
        if datatype(df[i,j]) == String
            df=replace(df[i,j],","=>"")
        end
    end
end
MethodError: no method matching similar(::Int64, ::Type{Any})
Closest candidates are:
  similar(!Matched::ZMQ.Message, ::Type{T}, !Matched::Tuple{Vararg{Int64,N}} where N) where T at C:\Users\

在多个数据类型的数组中替换子字符串的最有效方法是什么?

最佳答案

看到您的代码,我知道您想要就地操作(即更改原始数据框)。

在您的代码中使用循环方法,您可以这样做:

for col in axes(df,2)
    for row in axes(df, 1)
        cell = df[row, col]
        if cell isa AbstractString
            df[row, col] = replace(cell, "," => "")
        end
    end
end

使用广播你可以达到同样的目的:

helper_fun(cell) = cell isa AbstractString ? replace(cell, "," => "") : cell

df .= helper_fun.(df)

关于dataframe - 替换 Julia 中多种数据类型数组的子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63206205/

相关文章:

jupyter-notebook - 如何为 Julia 的早期版本添加 Jupyter Notebook 内核?

r - 在 R 中获取 data.frame 的样本

r - 累积粘贴(连接)按另一个变量分组的值

python - 在 PySpark 中使用正则表达式创建 N-Gram

python - 如何在 Mac 上设置 Julia init 路径?

io - 元图加载和保存

julia - 为什么负一 (-1) 提升为偶数次幂,在 Julia 中总是返回相同的结果?

variables - Julia 中变量名称的分数

pandas - 确定 Pandas 数据框的列是否唯一标识行

c++ - 在 Julia 中编写和调用 ArrayFire 自定义 C 函数的正确方法