我正潜入朱莉娅,因此是我的“新手”问题。
来自R和Python,我习惯将简单的函数(算术或其他函数)分别应用于整个pandas.DataFrame
和data.frame
s。
#both R and Python
df - 1 # returns all values -1, given all values are numeric
df == "someString" # returns a boolean df
有点复杂
#python
df = df.applymap(lambda v: v - 1 if v > 1 else v)
#R
df[] <- lapply(df, function(x) ifelse(x>1,x-1,x))
问题是,我不知道如何在Julia中做到这一点,我在网络上也不容易找到模拟解决方案。当使用Google时,Stackoverflow会有很大帮助。就是这样如何在Julia中完成?
感谢您的帮助!
PS:
到目前为止,我已经提出了以下解决方案,在这些解决方案中,我失去了列名。
DataFrame(colwise(x -> x .-1, df))
# seems like to much code for only subtracting 1 and loosing col names
答案 0 :(得分:3)
请将您的DataFrames.jl安装更新到版本0.19.0。
您可以使用这样的广播来做您想做的一切:
julia> df = DataFrame(rand(2,3))
2×3 DataFrame
│ Row │ x1 │ x2 │ x3 │
│ │ Float64 │ Float64 │ Float64 │
├─────┼──────────┼──────────┼──────────┤
│ 1 │ 0.666871 │ 0.206249 │ 0.729896 │
│ 2 │ 0.547018 │ 0.467758 │ 0.810292 │
julia> df .+ 1
2×3 DataFrame
│ Row │ x1 │ x2 │ x3 │
│ │ Float64 │ Float64 │ Float64 │
├─────┼─────────┼─────────┼─────────┤
│ 1 │ 1.66687 │ 1.20625 │ 1.7299 │
│ 2 │ 1.54702 │ 1.46776 │ 1.81029 │
julia> df .< 0.5
2×3 DataFrame
│ Row │ x1 │ x2 │ x3 │
│ │ Bool │ Bool │ Bool │
├─────┼──────┼──────┼──────┤
│ 1 │ 0 │ 1 │ 0 │
│ 2 │ 0 │ 1 │ 0 │
(输出来自Julia 1.3,但是在早期版本中,唯一的区别是Bool
在打印输出中将显示为true
/ false
)
这是您想要的吗?