Skip to main content

Extensions of pythonnet package to support pandas DataFrame conversions

Project description

pandasnet

Build Status

license pypi python supported

pandasnet_netstandard is a python package build on top of pythonnet_netstandard. 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_netstandard

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_netstandard

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_netstandard # 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_netstandard-0.7.2.tar.gz (15.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pandasnet_netstandard-0.7.2-py3-none-any.whl (31.1 kB view details)

Uploaded Python 3

File details

Details for the file pandasnet_netstandard-0.7.2.tar.gz.

File metadata

  • Download URL: pandasnet_netstandard-0.7.2.tar.gz
  • Upload date:
  • Size: 15.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.8.0

File hashes

Hashes for pandasnet_netstandard-0.7.2.tar.gz
Algorithm Hash digest
SHA256 3fe301336fad6fe77e74e0b78ef81149acf4ca6cdd9ce55409dd9cd98b8fead9
MD5 b9f67dd072f63f7613cb8277ed480d0a
BLAKE2b-256 c3f413a03a8e8bbc226411ebe59dc0ef282b3da4192e9f771b878e95d3e06d0c

See more details on using hashes here.

File details

Details for the file pandasnet_netstandard-0.7.2-py3-none-any.whl.

File metadata

File hashes

Hashes for pandasnet_netstandard-0.7.2-py3-none-any.whl
Algorithm Hash digest
SHA256 1a378a09b0f38e1c2b9691feb525804a11941b3a965a0f818ac199bf1f9a1c9c
MD5 0273c29b8c2bc7239eb0f0defe312308
BLAKE2b-256 9c321e98ee39f45ee696243ef373c3a3fc093a469137e7639043ba5548686400

See more details on using hashes here.

Supported by

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