假设我有数据框和向量,例如:
dataframe = DataFrame(Data1 = rand(10), Data2 = rand(10));
Data3 = rand(10)
Run Code Online (Sandbox Code Playgroud)
我想添加Data3到数据框,例如:
Data1 Data2 Data3
Float64 Float64 Float64
1 0.757345 0.903133 0.502133
2 0.294749 0.327502 0.323133
3 0.156397 0.427323 0.123133
Run Code Online (Sandbox Code Playgroud)
在 Python 中,我可以只df["Data3"] = Data3添加列,但在 Julia 数据框中,df[!,Data3] = Data3返回:
我也检查了这个解决方案,但这给了我:
如何在 Julia Dataframe 中添加向量作为新列?
在Python上使用r在文件路径前面,可以处理转义序列,例如:
df = pd.read_csv(r"D:\datasets\42133.csv")
Run Code Online (Sandbox Code Playgroud)
然而,在 Julia 上,以下代码返回MethodError: no method matches joinpath(::Regex)
file_path = r"D:\datasets\42133.csv"
df = DataFrame(CSV.File(file_path))
Run Code Online (Sandbox Code Playgroud)
我查了一下,知道我可以更改\为\\or /。但想知道为什么 Julia 不允许使用r"String"?r"String"朱莉娅也有类似的事情吗?
我正在寻找有效的解决方案来删除 Julia 列表中的空字符串。
这是我的清单:
li = ["one", "two", "three", " ", "four", "five"]
Run Code Online (Sandbox Code Playgroud)
我可以使用for 循环删除空字符串,如下所示:
new_li = []
for i in li
if i == " "
else
push!(new_li, i)
end
end
Run Code Online (Sandbox Code Playgroud)
但我相信有更有效的方法来删除空字符串。
下面的代码打印表情符号,如下所示:
print('\U0001F602')
print('{}'.format('\U0001F602'))
Run Code Online (Sandbox Code Playgroud)
但是,如果我\像下面这样使用,它会打印\U0001F602
print('\{}'.format('U0001F602'))
Run Code Online (Sandbox Code Playgroud)
为什么print('\{}'.format())返回的是\\,而不是转义字符\?
我一直在检查这个并在谷歌中搜索,但找不到正确的答案。
我正在寻找将列标题更改为小写的解决方案。
比方说,我有这个数据框:
df = DataFrame(TIME = ["2021-10-21","2021-10-22","2021-10-23"],
MQ2= [-1.1, -2, 1],
MQ3=[-1, -1, 3.1],
MQ8= [-1, -4.2, 2],
)
>>>df
TIME MQ2 MQ3 MQ8
String Float64 Float64 Float64
1 2021-10-21 -1.1 -1.0 -1.0
2 2021-10-22 -2.0 -1.0 -4.2
3 2021-10-23 1.0 3.1 2.0
Run Code Online (Sandbox Code Playgroud)
我想更改所有列的标题,例如 将MQ2更改为mq2。可能类似于df.columns.str.lower()Python 中的东西。
因此,我可以实现这个数据框:
time mq2 mq3 mq8
String Float64 Float64 Float64
1 2021-10-21 -1.1 -1.0 -1.0
2 2021-10-22 -2.0 -1.0 -4.2
3 2021-10-23 1.0 3.1 2.0
Run Code Online (Sandbox Code Playgroud) 当我通过 usung 构造指定类型的一维数组时,我感到很困惑getindex(type[, elements...])。
当然,当元素是Int时我可以转换Int 8
getindex(Int8, 1, 2)
2-element Vector{Int8}:
1
2
Run Code Online (Sandbox Code Playgroud)
即使元素是字符格式,我也可以将其转换为Int8:
getindex(Int8, '1', '2')
2-element Vector{Int8}:
49
50
Run Code Online (Sandbox Code Playgroud)
但是,当元素为字符串格式时,我无法转换。
getindex(Int8, "1", "2")
Run Code Online (Sandbox Code Playgroud)
并且,引发以下错误:
MethodError: Cannot `convert` an object of type String to an object of type Int8
Closest candidates are:
convert(::Type{T}, ::Ptr) where T<:Integer at pointer.jl:23
convert(::Type{IT}, ::GeometryBasics.OffsetInteger) where IT<:Integer at C:\Users\Admin\.julia\packages\GeometryBasics\WMp6v\src\offsetintegers.jl:40
convert(::Type{T}, ::SentinelArrays.ChainedVectorIndex) where T<:Union{Signed, Unsigned} at C:\Users\CARVI\.julia\packages\SentinelArrays\tV9lH\src\chainedvector.jl:209
...
Stacktrace:
[1] setindex!(A::Vector{Int8}, x::String, i1::Int64)
@ Base .\array.jl:839 …Run Code Online (Sandbox Code Playgroud) 我正在寻找一种解决方案来找出我的 Julia 数据框中的第 n大数据,类似于pd.Series.nlargest(n= 5, keep='first')Python 中的 。
更详细地说,假设我有 Julia 数据框,例如;
df = DataFrame(Data1 = rand(5), Data2 = rand(5));
Data1 Data2
Float64 Float64
1 0.125824 0.841358
2 0.612905 0.337965
3 0.210736 0.66849
4 0.172203 0.377226
5 0.898269 0.448477
Run Code Online (Sandbox Code Playgroud)
如何从列名Data1中获取第 n 个最大值?
如果n = 3,下面是我的预期输出。
5 0.898269
2 0.612905
3 0.210736
Run Code Online (Sandbox Code Playgroud) 我正在寻找一种解决方案来处理 Julia 数据框中不存在列名的情况。
更详细地说,假设我有以下数据框和列表:
df = DataFrame(id= "12345", description= rand(5));
err_Li = ["12345"]
Run Code Online (Sandbox Code Playgroud)
我需要检查id列是否匹配,err_Li例如:
if (df[1,"id"] in err_Li)
println("NOT VALID")
else
end
Run Code Online (Sandbox Code Playgroud)
但是,在我的一些数据框中,列名id不存在。所以在Python中,我可以处理try-except诸如:
try :
if df['id'][0] in err_Li:
print('err')
else: pass
except : pass
Run Code Online (Sandbox Code Playgroud)
当 Julia 数据框中不存在列名或者 Python 中是否有等效函数时,如何控制流程try-except?