Skip to main content

Extensions of pythonnet package to support pandas DataFrame conversions

Project description

pandasnet

build release

license pypi python supported

pandasnet is a python package build on top of pythonnet. It provides additional data conversions for pandas, numpy and datetime

Prerequisites

  • python 3.6 or higher.
  • dotnet.

dotnet also provides scripts to proceed the installation by command line.

Installation

pip install pandasnet

Features

To load the converter you need to import the package once in your python environment. If the dotnet clr isn't started yet through the pytonnet package the import will.

import pandasnet

We construct a simple C# function to test conversion

using System;
using System.Collections.Generic;

namespace LibForTests
{
    public class PandasNet
    {
        public static Dictionary<string, Array> BasicDataFrame(Dictionary<string, Array> df)
            => df;
    }
}

We build this function into a library named LibForTests.dll. We load this library into our python environment then use it.

import clr
import pandasnet # Load the converters
import pandas as pd
from datetime import datetime

# Load your dll
clr.AddReference('LibForTests.dll')
from LibForTests import PandasNet as pdnet

x = pd.DataFrame({
    'A': [1, 2, 3],
    'B': [1.23, 1.24, 1.22],
    'C': ['foo', 'bar', 'other'],
    'D': [datetime(2021, 1, 22), datetime(2021, 1, 23), datetime(2021, 1, 24)]
})
y = pdnet.BasicDataFrame(x)

print(y)

Below an exhausitve list of supported data convertions.

Python -> .Net

Python .Net
datetime.datetime DateTime
datetime.date DateTime
datetime.timedelta TimeSpan
datetime.time TimeSpan
numpy.ndarray(dtype=bool_) bool[]
numpy.ndarray(dtype=int8) sbyte[]
numpy.ndarray(dtype=int16) short[]
numpy.ndarray(dtype=int32) int[]
numpy.ndarray(dtype=int64) long[]
numpy.ndarray(dtype=uint8) byte[]
numpy.ndarray(dtype=uint16) ushort[]
numpy.ndarray(dtype=uint32) uint[]
numpy.ndarray(dtype=uint64) ulong[]
numpy.ndarray(dtype=float32) float[]
numpy.ndarray(dtype=float64) double[]
numpy.ndarray(dtype=datetime64) DateTime[]
numpy.ndarray(dtype=timedelta64) TimeSpan[]
numpy.ndarray(dtype=str) string[]
pandas._libs.tslibs.timestamps.Timestamp DateTime
pandas._libs.tslibs.timedeltas.TimeDelta TimeSpan
pandas.core.series.Series Array
pandas.core.frame.DataFrame Dictionary[string, Array]

.Net -> Python

.Net Python
DateTime datetime.datetime
TimeSpan datetime.timedelta
bool[] numpy.ndarray(dtype=bool_)
sbyte[] numpy.ndarray(dtype=int8)
short[] numpy.ndarray(dtype=int16)
int[] numpy.ndarray(dtype=int32)
long[] numpy.ndarray(dtype=int64)
byte[] numpy.ndarray(dtype=uint8)
ushort[] numpy.ndarray(dtype=uint16)
uint[] numpy.ndarray(dtype=uint32)
ulong[] numpy.ndarray(dtype=uint64)
float[] numpy.ndarray(dtype=float32)
double[] numpy.ndarray(dtype=float64)
DateTime[] numpy.ndarray(dtype=datetime64)
TimeSpan[] numpy.ndarray(dtype=timedelta64)
Dictionary[string, Array] pandas.core.frame.DataFrame

Contributing

Issue tracker: https://github.com/fdieulle/pandasnet/issues

If you want to checkout the project and propose your own contribution, you will need to setup it following few steps:

Create a virtual environment:

python -m venv venv

Activate your virtual environment:

venv/Scripts/activate

Install package dependencies

pip install -r requirements.txt

License

This project is open source under the MIT license.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pandasnet-1.0.tar.gz (16.8 kB view details)

Uploaded Source

Built Distribution

pandasnet-1.0-py3-none-any.whl (22.8 kB view details)

Uploaded Python 3

File details

Details for the file pandasnet-1.0.tar.gz.

File metadata

  • Download URL: pandasnet-1.0.tar.gz
  • Upload date:
  • Size: 16.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.6

File hashes

Hashes for pandasnet-1.0.tar.gz
Algorithm Hash digest
SHA256 198d36eeaf01e39fe1e08541ad3c4621c5295cf2b8b8f73157d037ab882cd4f6
MD5 88576e37b9a91c9aedbd5a2a7d8a566a
BLAKE2b-256 fe5d06e9539359ede2923417ee42a4ecc109997560088d4b2acb47a73938508a

See more details on using hashes here.

File details

Details for the file pandasnet-1.0-py3-none-any.whl.

File metadata

  • Download URL: pandasnet-1.0-py3-none-any.whl
  • Upload date:
  • Size: 22.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.6

File hashes

Hashes for pandasnet-1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 190d6a3db816f1faad6b825b078dfa171260cfe5363b4f148f36d66259a6bdf9
MD5 f70d107aa1ec8e0050d9c8700b814d75
BLAKE2b-256 1ef114ad58c85ddf08f1f525f37936d7ae9b312a94bdeb28f0bce2605b48b58a

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page