我正在尝试获取数据框的子集。起始点必须是当月的第一天。终点必须是当天。之后,我想按组统计不同的活动。
数据框:
date | activity
06-07-2020 | walking
06-07-2020 | rucking
07-07-2020 | tennis
...
Run Code Online (Sandbox Code Playgroud)
我尝试过:
DfName[Dates.firstdayofmonth(Dates.today()):Dates.today(), :]
Run Code Online (Sandbox Code Playgroud)
结果 :
ERROR: MethodError: Cannot `convert` an object of type Int64 to an object of type Dates.Day
Run Code Online (Sandbox Code Playgroud)
我也尝试过:
combine(groupby(DfName, :activity), nrow => :count)
@where(DfName, :date .>= Dates.firstdayofmonth(Dates.today()), :date .<= Dates.today())`
Run Code Online (Sandbox Code Playgroud)
结果 :
@where(DfName, :date .>= Dates.firstdayofmonth(Dates.today()), :date .<= Dates.today())
ERROR: MethodError: no method matching isless(::Dates.Date, ::String)
Closest candidates are:
isless(::DataValues.DataValue{Union{}}, ::Any) at /home/...
isless(::PyObject, ::Any) at /home/...
Run Code Online (Sandbox Code Playgroud)
我怎样才能在朱莉娅做到这一点?
使用以下内容:
filter(:date => x -> Dates.firstdayofmonth(Dates.today()) <= x <= Dates.today(), DfName)
Run Code Online (Sandbox Code Playgroud)
或者
filter(row -> Dates.firstdayofmonth(Dates.today()) <= row.x <= Dates.today(), DfName)
Run Code Online (Sandbox Code Playgroud)
或者
DfName[Dates.firstdayofmonth(Dates.today()) .<= DfName.date .<= Dates.today(), :]
Run Code Online (Sandbox Code Playgroud)
或(很快将在 DataFrames.jl 1.0 版本中发布):
subset(DfName,
:date => ByRow(>=(Dates.firstdayofmonth(Dates.today())),
:date => ByRow(<=(Dates.today())
)
Run Code Online (Sandbox Code Playgroud)