Dataframe 在Julia中,通过对列::Float64进行装箱来对数据帧进行分组

Dataframe 在Julia中,通过对列::Float64进行装箱来对数据帧进行分组,dataframe,julia,Dataframe,Julia,假设我有一个DataFrame,其列为Float64s,我想通过将该列装箱来对数据帧进行分组。我听说cut函数可能会有所帮助,但它没有在数据帧上定义。已经完成了一些工作(),但我宁愿使用库函数,也不愿从Internet复制粘贴代码。指针 编辑在UNIX时间戳上找到按月执行此操作的方法的额外业力:)您可以基于一列Float64来存储数据帧,如下所示。在这里,我的存储箱是从0.0到1.0的增量0.1,基于0.0到1.0之间的100个随机数列对数据帧进行存储 using DataFrames #loa

假设我有一个
DataFrame
,其列为
Float64
s,我想通过将该列装箱来对数据帧进行分组。我听说
cut
函数可能会有所帮助,但它没有在数据帧上定义。已经完成了一些工作(),但我宁愿使用库函数,也不愿从Internet复制粘贴代码。指针


编辑在UNIX时间戳上找到按月执行此操作的方法的额外业力:)

您可以基于一列
Float64
来存储数据帧,如下所示。在这里,我的存储箱是从0.0到1.0的增量0.1,基于0.0到1.0之间的100个随机数列对数据帧进行存储

using DataFrames #load DataFrames
df = DataFrame(index = rand(Float64,100)) #Make a DataFrame with some random Float64 numbers
df_array = map(x->df[(df[:index] .>= x[1]) .& (df[:index] .<x[2]),:],zip(0.0:0.1:0.9,0.1:0.1:1.0)) #Map an anonymous function that gets every row between two numbers specified by a tuple called x, and map that anonymous function to an array of tuples generated using the zip function.

CategoricalArrays.jl@ian marshall中有一个cut函数,这或多或少就是我最终要做的,除了我对月粒度的最低/截短日期进行操作,类似于上面评论中Dan的方法,但更详细。关于UNIX时间戳,
df[:month]=dates.month.(df[:timestamp])
对我有效
groupby(df,:month)
以后可以根据列拆分数据帧。这或多或少是我做的,只是我使用了太多的代码…:)
using Dates

df = DataFrame(unixtime = rand(1E9:1:1.1E9,100)) #Make a dataframe with floats containing pretend unix time stamps
df[:date] = Dates.unix2datetime.(df[:unixtime]) #convert those timestamps to DateTime types
df[:year_month] = map(date->string(Dates.Year.(date))*" "*string(Dates.Month.(date)),df[:date]) #Make a string for every month in your time range
df_array = map(ym->df[df[:year_month] .== ym,:],unique(df[:year_month])) #Bin based on each unique year_month string