Skip to content

Add parquet support for importing and exporting data to/from DataFrame. #5972

Closed as not planned

Description

@andrei-faber

At the current moment, the only supported way to import/export data is to use CSV format; it would be very useful to add support for some more commonly used data formats or databases.

Activity

  1. michaelgsharp commented on Oct 14, 2021

    @michaelgsharp
    Contributor

    What other data formats are you thinking of? If we can get specific formats people want it helps with prioritizing things.

  2. andrei-faber commented on Oct 14, 2021

    @andrei-faber
    ContributorAuthor

    @michaelcfanning I think that Parquet would be useful too, not sure about other formats.

  3. michaelcfanning commented on Oct 14, 2021

    @michaelcfanning

    I think you meant @michaelgsharp but, since I'm here, I agree Parquet would be useful. :)

  4. andrei-faber commented on Oct 14, 2021

    @andrei-faber
    ContributorAuthor

    @michaelcfanning ah sorry my bad :)

  5. michaelgsharp commented on Oct 15, 2021

    @michaelgsharp
    Contributor

    I'll go ahead and change this title to be adding parquet support then.

    Glad you could join us, other Michael :)

  6. changed the title [-]Add more ways to import and export data to/from DataFrame[/-] [+]Add parquet support for importing and exporting data to/from DataFrame.[/+] on Oct 15, 2021
  7. adamreeve commented on Jan 12, 2022

    @adamreeve

    Hi, I'm one of the maintainers of ParquetSharp, and we've just released the first version of ParquetSharp.DataFrame which supports reading Parquet into DataFrames and exporting DataFrames to Parquet. The API isn't yet stable but functionality should be fairly complete so we'd love to get some feedback.

    Microsoft may still want to provide built-in Parquet support in Microsoft.Data.Analysis so this probably doesn't fix this issue, but is hopefully useful to anyone following this issue, and if our work could be useful for providing that built-in Parquet support we'd be happy to help out where we can.

  8. added this to the ML.NET Future milestone on Jan 18, 2022
  9. michaelgsharp commented on Jan 18, 2022

    @michaelgsharp
    Contributor

    @adamreeve thanks for pointing this out!

    We are currently in the process of creating/prioritizing our dataprep plan so we will definitely keep this in mind.

  10. pgovind commented on Jan 28, 2022

    @pgovind

    I've been out of the loop here for a while, so this may not be as accurate anymore: FWIW, at one point the main thought here was to create a separate DataFrame.IO library that could incrementally add support for the different data formats in common use. Just something to consider.

  11. totalgit74 commented on Nov 18, 2022

    @totalgit74

    I like the idea of the separate IO library and believe that performant access to a format such as Parquet that will allow interop between .Net and Python as users see fit would be a good thing. CSVs aren't particularly good for maintaining types or large data sets.

  12. x202611 commented on Apr 17, 2023

    @x202611

    DataFrame only seems to support primitive data types, unlike parquet which supports arrays, structs, maps, lists etc.

    Therefore I can't see this working unless DataFrame adds support for complex types?

  13. andrei-faber commented on Apr 18, 2023

    @andrei-faber
    ContributorAuthor

    @aloneguid hm doesn't it support complex types like DataFrame in Spark does?
    In any case, it's still possible to make it import/export files that contain primitive types only.

  14. totalgit74 commented on Apr 18, 2023

    @totalgit74

    My concern currently is the limited amount of data interop between different languages. The defacto is currently Pandas which supports both parquet and feather. In order to gain better traction any libraries/languages positioning themselves in this space need to be able to interop large data sets with the defacto else they will find it very hard to improve their usage.

    I am hitting this issue where, for a lot of things C# is clearly the better language choice but due to the inability to deal with a viable data interop format (CSV is not it) that Python or R can use it is a non-starter. This leads to the instance where yet another company will decrease its use of a language.

    As @andrei-faber mentions - you don't need to support every type a format can accept first up, but supporting primitive types fully would be a start that could be built upon.

  15. x202611 commented on Apr 19, 2023

    @x202611

    @aloneguid hm doesn't it support complex types like DataFrame in Spark does? In any case, it's still possible to make it import/export files that contain primitive types only.

    I couldn't find it. There is #6088 that requests to add a simple array support but that's all. Looking at pandas, even struct support is a bit awkward, but I'm not an expert, maybe someone can clarify why there is only basic types support, is this sufficient?

  16. rosebyte commented on Sep 30, 2026

    @rosebyte
    Member

    Triage: it would make sense, however, we don't see high demand for the change, if you have a real world use case, please create a new issue so we can reconsider.

  17. totalgit74 commented on Oct 1, 2026

    @totalgit74

    The real world use case would be persistence of dataframes and interop with other languages like R and Python. Without easy interop you will struggle to make headway against an established player like Python. With the ability to easily share data between them you can choose the best tool for the job. Open is always better.

  18. matouskozak commented on Oct 1, 2026

    @matouskozak
    Member

    Thank you @totalgit74 , that's a definitely a valid use case and something that would bring parity with libraries like Pandas. However, we currently do not have capacity for adding new DataFrame.IO formats and we will rather focus on supporting the existing one.

    Comments like this or 👍 on existing issues help us gauge demand and plan work for the future.

    In the meantime, there is a community package https://github.com/G-Research/ParquetSharp.DataFrame that can read and write Parquet.

    Update: as mentioned by @aloneguid , the https://github.com/aloneguid/parquet-dotnet also provides a support for read/write of parquet files and its version is already part of ML.NET depedency chain.

  19. x202611 commented on Oct 1, 2026

    @x202611

    Parquet library ML.NET is already using already supports DataFrame. I'd advise not to add G-Research dependency which is a wrapper around C++, unlike the already existing managed implementation.

  20. matouskozak commented on Oct 1, 2026

    @matouskozak
    Member

    Parquet library ML.NET is already using already supports DataFrame. I'd advise not to add G-Research dependency which is a wrapper around C++, unlike the already existing managed implementation.

    Thank you @aloneguid , I updated the original comment. If you would like to help with adding the support, it would be beneficial for us to see an API proposal and plan of changes needed so that we can evaluate the scope of this work. As mentioned above, unfortunutely, we currently do not have capacity to drive this forward.

  21. locked and limited conversation to collaborators on Nov 1, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area-DataFrameMicrosoft.Data.Analysis DataFrame APIsenhancementNew feature or requestyellowmaintenance only

    Type

    No type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions