Repository URL to install this package:
|
Version:
3.0.3 ▾
|
import zoneinfo
import pytest
from pandas.compat import (
pa_version_under18p0,
pa_version_under23p0,
)
import pandas as pd
import pandas._testing as tm
from pandas.io._util import arrow_table_to_pandas
pa = pytest.importorskip("pyarrow")
pytz = pytest.importorskip("pytz")
pytestmark = pytest.mark.filterwarnings(
"ignore:Passing a BlockManager to DataFrame:DeprecationWarning"
)
def test_arrow_table_to_pandas_normalize_timezones():
df = pd.DataFrame(
{"ts": pd.date_range("2024-03-01", periods=2, tz="America/New_York")},
index=pd.date_range("2024-01-01", periods=2, tz="US/Eastern"),
)
expected = df.copy()
expected.index = expected.index._with_freq(None)
table = pa.Table.from_pandas(df)
result = arrow_table_to_pandas(table)
tm.assert_frame_equal(result, expected)
assert isinstance(result["ts"].dtype.tz, zoneinfo.ZoneInfo)
assert isinstance(result.index.tz, zoneinfo.ZoneInfo)
def test_arrow_table_to_pandas_normalize_timezones_columns():
df = pd.DataFrame(
[[1, 2], [3, 4]],
columns=pd.date_range("2024-02-01", periods=2, tz="Europe/Berlin"),
)
expected = df.copy()
table = pa.Table.from_pandas(df)
result = arrow_table_to_pandas(table)
if pa_version_under23p0 and not pa_version_under18p0:
expected.columns = expected.columns.as_unit("ns")
tm.assert_frame_equal(result, expected)
assert isinstance(result.columns.tz, zoneinfo.ZoneInfo)
def test_arrow_table_to_pandas_normalize_timezones_multiindex():
df = pd.DataFrame(
{"ts": pd.date_range("2024-03-01", periods=2, tz="America/New_York")},
index=pd.Index([1, 2], name="index"),
).set_index("ts", append=True, drop=False)
expected = df.copy()
table = pa.Table.from_pandas(df)
result = arrow_table_to_pandas(table)
tm.assert_frame_equal(result, expected)
assert isinstance(result["ts"].dtype.tz, zoneinfo.ZoneInfo)
assert isinstance(result.index.get_level_values("ts").tz, zoneinfo.ZoneInfo)