- No breaking changes are planned for v1.0 release
- DataFrames.jl now checks that passed columns are 1-based as this is a current design assumption (#2594)
mapcols!makes sure not to create columns beingAbstractRangeconsistently with other methods that add columns to aDataFrame(#2594)
firstindex,lastindex,size,ndims, andaxesare now consistently defined and documented in the manual forAbstractDataFrame,DataFrameRow,DataFrameRows,DataFrameColumns,GroupedDataFrame,GroupKeys, andGroupKey(#2573)- add
subsetandsubset!functions that allow to subset rows (#2496) namesnow allows passing a predicate as a column selector (#2417)
- all old deprecations now throw an error (#2554)
innerjoin,leftjoin,rightjoin, andouterjoinare now much faster and check if passed data frames are sorted by theoncolumns and takes into account if shorter data frame that is joined has unique values inoncolumns. These aspects of input data frames might affect the order of rows produced in the output (#2612, [#2622][#2622])DataFrameconstructor,getindex,select,select!,transform,transform!, andcombinefunctions now use multiple threads in selected operations (XXXX)
- the rules for transformations passed to
select/select!,transform/transform!, andcombinehave been made more flexible; in particular now it is allowed to return multiple columns from a transformation function (#2461 and #2481) - CategoricalArrays.jl is no longer reexported: call
using CategoricalArraysto use it #2404. In the same vein, thecategoricalandcategorical!functions have been deprecated in favor oftransform(df, cols .=> categorical .=> cols)and similar syntaxes #2394.stacknow creates aPooledVector{String}variable column rather than aCategoricalVector{String}column by default; passvariable_eltype=CategoricalValue{String}to get the previous behavior (#2391) islessforDataFrameRows now checks column names (#2292)DataFrameColumnsis now not a subtype ofAbstractVector(#2291)nuniqueis not reported now bydescribeby default (#2339)- stop reordering columns of the parent in
transformandtransform!; always generate columns that were specified to be computed even forGroupedDataFramewith zero rows (#2324) - improve the rule for automatically generated column names in
combine/select(!)/transform(!)with composed functions (#2274) :nmissingindescribenow produces0if the column does not allow missing values; earliernothingwas produced in this case (#2360)- fast aggregation functions in for
GroupedDataFramenow correctly choose the fast path only when it is safe; this resolves inconsistencies with what the same functions not using fast path produce (#2357) - joins now return
PooledVectornotCategoricalVectorin indicator column (#2505) GroupKeysnow supportsinforGroupKey,Tuple,NamedTupleand dictionaries (2392)- in
describethe specification of custom aggregation is nowfunction => name; oldname => functionorder is now deprecated (#2401) - in joins passing
NaNor real or imaginary-0.0inoncolumn now throws an error; passingmissingthows an error unlessmatchmissing=:equalkeyword argument is passed (#2504) unstacknow produces row and column keys in the order of their first appearance and has two new keyword argumentsallowmissingandallowduplicates(#2494)- PrettyTables.jl is now the
default back-end to print DataFrames to text/plain; the print option
splitcolswas removed and the output format was changed (#2429)
- add
filtertoGroupedDataFrame(#2279) - add
emptyandempty!function forDataFramethat remove all rows from it, but keep columns (#2262) - make
indicatorkeyword argument in joins allow passing a string (#2284, #2296) - add new functions to
GroupKeyAPI to make it more consistent withDataFrameRow(#2308) - allow column renaming in joins (#2313 and (#2398)
- add
rownumbertoDataFrameRow(#2356) - allow passing column name to specify the position where a new columns should be
inserted in
insertcols!(#2365) - allow
GroupedDataFrames to be indexed using a dictionary, which can useSymbolor string keys and are not dependent on the order of keys. (#2281) - add
isapproxmethod to check for approximate equality between two dataframes (#2373) - add
columnindexforDataFrameRow(#2380) namesnow acceptsTypeas a column selector (#2400)select,select!,transform,transform!andcombinenow allowrenamecolskeyword argument that makes it possible to avoid adding transformation function name as a suffix in automatically generated column names (#2397)filter,sort,dropmissing, anduniquenow support aviewkeyword argument which if set totruemakes them retun aSubDataFrameview into the passed data frame.- add
onlymethod forAbstractDataFrame(#2449) - passing empty sets of columns in
filter/filter!and inselect/transform/combinewithByRowis now accepted (#2476) - add
permutedimsmethod forAbstractDataFrame(#2447) - add support for
Colsfrom DataAPI.jl (#2495)
DataFrame!is now deprecated (#2338)- several in-standard
DataFrameconstructors are now deprecated (#2464) - all old deprecations now throw an error (#2350)
- Tables.jl version 1.2 is now required.
- DataAPI.jl version 1.4 is now required. It implies that
All(args...)is deprecated andCols(args...)is recommended instead.All()is still supported.
- Documentation is now available also in Dark mode (#2315)
- add rich display support for Markdown cell entries in HTML and LaTeX (#2346)
- limit the maximal display width the output can use in
text/plainbefore being truncated (in thetextwidthsense, excluding…) to32per column by default and fix a corner case when no columns are printed in situations when they are too wide (#2403) - Common methods are now precompiled to improve responsiveness the first time a method is called in a Julia session. Precompilation takes up to 30 seconds after installing the package (#2456).