JuliaPy / JuliaPy/PythonCall.jl

`DataFrame(::PyPandasDataFrame)` converts date & datetime to bytes

Ouverte
#293 18 commentaires 0 réactions 0 personnes assignées Voir sur GitHub
Langage dominant
Julia
Étoiles
1.1k
Forks
86
Merge moyen
1 j 22 h
PR mergées (30 j)
3

Description

When doing some work involving dataframes in python via PythonCall, it seems like `DataFrame(PyTable(p))` where `p` is a pandas data table converts the date and datetime columns into byte vectors. Is this issue related to the issue #265 with milliseconds vs microseconds, or due to a missing part of the `DataFrame(::PyPandasDataFrame)` implementation?

Here are a few minimal examples, in a conda environment with pandas.

```
using PythonCall
using Dates
using DataFrames

a = DataFrame(x = [now()]) # julia dataframe
b = pytable(a) # pandas dataframe
c = PyTable(b) # PyPandasDataFrame
d = DataFrame(c) # julia dataframe again
```
This results in:
```
julia> c
1×1 PyPandasDataFrame
x
0 2023-04-13 14:36:13.939

julia> d
1×1 DataFrame
Row │ x
│ PyArray…
─────┼───────────────────────────────────
1 │ UInt8[0xc0, 0x62, 0x31, 0x8c, 0x…
```
The same thing happens when initially defining `b` as a pandas dataframe, so the microsecond issue in #265 seems to not be the problem?
```
julia> b = pd.DataFrame([[dt.datetime.now()]])
Python DataFrame:
0
0 2023-04-13 14:46:57.940077

julia> c = PyTable(b)
1×1 PyPandasDataFrame
0
0 2023-04-13 14:46:57.940077

julia> d = DataFrame(c)
1×1 DataFrame
Row │ 0
│ PyArray…
─────┼───────────────────────────────────
1 │ UInt8[0xc8, 0xf9, 0xa5, 0x7d, 0x…
```

Guide de contribution

Aucun guide de contribution indexé pour ce dépôt

Piste de recherche

Start with the DataFrame(::PyPandasDataFrame) conversion demonstrated in the issue and reproduce both pandas date and datetime examples. Trace how those columns become PyArray byte vectors, then verify that the round trip produces Julia date or datetime values rather than byte vectors.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
julia, pandas, python
Domaine
data
Type d'issue
Bug
Difficulté
4/5
Temps estimé
3-5 jours
Activité
À l'abandon
Clarté
Plutôt claire
Accessibilité débutants
35/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.