Repository navigation
Closed
Labels
area-DataFrameMicrosoft.Data.Analysis DataFrame APIsMicrosoft.Data.Analysis DataFrame APIsenhancementNew feature or requestNew feature or requestin-prA pull request is open to resolve this issueA pull request is open to resolve this issueyellowmaintenance onlymaintenance only
Milestone
Description
Summary
This issue tracks priorities and discussions around DataFrame improvements based on issues and feedback.
Microsoft.Data.Analysis Open Issue Query: https://github.com/dotnet/machinelearning/issues?q=is%3Aopen+is%3Aissue+label%3AMicrosoft.Data.Analysis
Work Items
- DataFrame - Add KeyType Column Support #6499
- DataFrame - Support loading / saving to SQL #6498
- DataFrame - Drop multiple columns #6497
- DataFrame - Rename columns #6496
- Fix reported Merge operation bugs #6493
- Fix reported Join operation bugs #6494
- Fix reported Group operation bugs #6495
Related Issues
Create DataFrames
Data Formatting
Data Sources
- DataFrame LoadSql Method #5662
- Add parquet support for importing and exporting data to/from DataFrame. #5972
- DataFrame enhancements #6088
- DataFrame.LoadCsv should support URLs #5905
- Dataframe load data from excel and query using sql #5646
Other
Reshape DataFrames
- Pivot / Transpose
- Create columns
- Reset indices
- Rename columns
Filter / Sort DataFrames
Combine DataFrames
- Merge
- Join
- Concat
Group DataFrames
- Grouping
- Aggregate Functions
Summarize DataFrames
- Descriptive statistics
- PrimitiveDataFrameColumnComputations produce wrong result for Min/Max functions #5759
Handle Missing Data
- Drop missing data
- Impute / Fill missing data
DataTypes
Array / Vector / VBuffer
- DataFrame - add support for vbuffer #5872
- DataFrame needs to support vector columns. #5721
- DataFrame should support Array data #5746
- Support "Sparse" and "Dense" vector typed columns in the DataFrame #5690
DateTime
- Cannot run Transform on DataFrame with DateTime type #6213
- Add missing implementation for datetime relevant arrow types #6201
Other
- Let DataFrame support UInt32 columns to be compatible with MapValueToKey #5898
- Improve error experience when LoadCsv throws #5656
Misc
- LINQ / EFCore?
- DateTime operations
Reacted by Sam, Mark Adamson, bolcman, Mikael Öhman, Craig Austin, Enrique Thedy, Jens G., Pablo S. Velazco, Julien Bouvier, Roman Kuzmin 1967-2026 and 3 more
Reacted by DTR
Reacted by Mark Adamson, bolcman, Mikael Öhman, Veikko Eeva, Taras Novak, Pablo S. Velazco and Matthew-Hope Eland
Metadata
Metadata
Assignees
Labels
area-DataFrameMicrosoft.Data.Analysis DataFrame APIsMicrosoft.Data.Analysis DataFrame APIsenhancementNew feature or requestNew feature or requestin-prA pull request is open to resolve this issueA pull request is open to resolve this issueyellowmaintenance onlymaintenance only
Activity
Bigwiggz commentedon Mar 30, 2022
Can you please finish the dataframe? I realize it is not a high priority but this would be a great addition to .net even just for data-wrangling. Also, Is there a way to convert the dataframe to a C# List of a Custom Class?
Bigwiggz commentedon Mar 31, 2022
I was wondering if there could be a LoadExcel Method for the dataframe for .xlsx or .xls files like Pandas has?
luisquintanilla commentedon Mar 31, 2022
Not built-in, but one way you might want to try doing it is by accessing the DF rows. Something like:
Bigwiggz commentedon Apr 2, 2022
Thanks!
nodakai commentedon Apr 8, 2022
Can you please add first-class support for time series analysis? I see lots of outcry in the GH Issues.... First of all
DateTimecolumns are unusable in VS code due to #5698MikaelUmaN commentedon Jun 20, 2022
Hey, This is a great summary and a good list of features.
I am not sure why this doesn't seem to have higher priority. I can tell you that from an industry perspective, a proper dataframe solution - especially involving time series functionality - is a prerequisite for dotnet to be competetive in the analysis space. I can't leave python even if I wanted to.
Great list, hope to see this implemented!
artemiusgreat commentedon Jun 23, 2022
Looks like neither
DataFrame, norIDataView, has an ability to convert types of vectors.Developers can convert column of
Stringtype toSingletype, but can't convertString[]toSingle[].I'm trying to use vectors of variable length as features. The data view with features.
Using pipeline estimator
TokenizeIntoWords, I can split selected features into a vector of words.After this, how can I specify that
Tokensis a vector of numbers, not strings? Also, how do I normalize this vector, considering that this is a row-based vector and standard ML transformers, likeNormalizeMinMax, apply to column-based data?artemiusgreat commentedon Jun 26, 2022
The implementation is pretty bad, not thread-safe, not GC friendly, etc, but this is what would be nice to have available in
DataFrame. Besides support for vector types, would be nice to add more flexible custom mapping -Converterthat doesn't enforce to specify input and output type.Usage example
[-]Plan for DataFrame (Microsoft.Data.Analysis) [/-][+]DataFrame (Microsoft.Data.Analysis) Tracking Issue [/+]chriss2401 commentedon Jul 29, 2022
Hi @luisquintanilla , thank you for this overview. Would you consider adding my issue as well ?
#5652
Edit:
And also maybe this one
#5656
16 remaining items
asmirnov82 commentedon Nov 30, 2023
Hi @integerman , there is an easier way to pull data out of a column.
As each column implements IEnumerable<T?> you can use
However, there are several issues with this approach. First issue is related to using Single data type (not Double)) in your example. SingleDataFrameColumn stores float values, that you have to explicitly convert to doubles to pass them to ScottPlot. Second issue is that DataFrame allows to store Nulls, so actual type of dataX is
float?[].Actually, using
Select( x => (double) x).ToArray()may fail with System.InvalidOperationException "Nullable object must have a value." in case of any Null value inside your column.So my suggestion is:
After that you will be able to simplify your code to:
lucvalentino commentedon Mar 25, 2024
I could not find a way to apply lambdas to DF or to results of GroupBy (like the Apply function in Pandas).
In particular, after a GroupBy the only way to apply lambdas to the groups and columns is to loop through the groups and add the new transformed rows into a new DF. Something like this:
Is there a better was to achieve this?
Is there any plan to implement an Apply method?
asmirnov82 commentedon Mar 25, 2024
Hi @lucvalentino. Dataframe columns have two methods that take a lambda and apply it to the column content: ApplyElementwise and Apply. However, as lambda function is generic, these method are defined on the level of the inheritors of the base DataFrameColumn class.
For example for
PrimitiveDataFrameColumn<T>:For
ArrowStringDataFrameColumn:For some reason StringDataFrameColumn and VBufferDataFrameColumn don't support such functionality.
ApplyElementwise applies lambba in place and Apply method returns new column as a result and allows result to have different underlying data type.
As regarding grouping, unfortunately it seems that current implementation of GroupBy class (result of the DataFrame.GroupBy method) doesn't allow to specify different aggregation functions to different columns. I think the simpliest way to achive expected result is to use code like this:
These implementation can be very CPU and memory consuming for large dataframe, so I absolutely agree with you that current GroupBy API requires redesign.
lucvalentino commentedon Mar 25, 2024
Thanks @asmirnov82 for your prompt reply and clarifications!
I saw those Apply and ApplyElementwise methods at column level, and also realized that they were not available for StringDataFrameColumn. But I thought there was a way to apply lambdas directly to DFs similarly to Pandas or PySpark.
It would be nice to make the Apply and ApplyElementwise available to all column types.
And yes, the GroupBy would need some redesign, with the current design the user gets somehow stuck after that operation.
But hey, thanks to all developers contributing to this project!
MgSam commentedon Aug 12, 2026
I know this project is basically abandoned but now that our robot friends can do most of the work is it worth setting them loose on the backlog and resurrecting this library?
rosebyte commentedon Sep 30, 2026
@MgSam, this project isn't abandoned, meaningful contributions welcomed :-)
rosebyte commentedon Sep 30, 2026
Triage: closing as outdated tracking issue.