JuliaPy / JuliaPy/PythonCall.jl
`DataFrame(::PyPandasDataFrame)` converts date & datetime to bytes
- 主要語言
- Julia
- 星號
- 1.1k
- 分支
- 86
- 平均合併
- 1 天 22 小時
- 30 天內合併 PR
- 3
描述
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…
```
貢獻指南
這個儲存庫沒有索引到貢獻指南
研究方向
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.
由索引模型根據 Issue 內容生成。
評估
- 技術堆疊
- julia, pandas, python
- 領域
- data
- Issue 類型
- 缺陷
- 難度
- 4/5
- 預估耗時
- 3-5 天
- 活躍度
- 停滯
- 描述清晰度
- 基本清楚
- 新手友好度
- 35/100