|
40 | 40 | pa_version_under8p0,
|
41 | 41 | pa_version_under9p0,
|
42 | 42 | pa_version_under11p0,
|
| 43 | + pa_version_under13p0, |
43 | 44 | )
|
44 | 45 | from pandas.util._decorators import doc
|
45 | 46 | from pandas.util._validators import validate_fillna_kwargs
|
@@ -1252,6 +1253,8 @@ def _reduce(self, name: str, *, skipna: bool = True, **kwargs):
|
1252 | 1253 |
|
1253 | 1254 | data_to_reduce = self._data
|
1254 | 1255 |
|
| 1256 | + cast_kwargs = {} if pa_version_under13p0 else {"safe": False} |
| 1257 | + |
1255 | 1258 | if name in ["any", "all"] and (
|
1256 | 1259 | pa.types.is_integer(pa_type)
|
1257 | 1260 | or pa.types.is_floating(pa_type)
|
@@ -1327,9 +1330,15 @@ def pyarrow_meth(data, skip_nulls, **kwargs):
|
1327 | 1330 | if name in ["min", "max", "sum"] and pa.types.is_duration(pa_type):
|
1328 | 1331 | result = result.cast(pa_type)
|
1329 | 1332 | if name in ["median", "mean"] and pa.types.is_temporal(pa_type):
|
| 1333 | + if not pa_version_under13p0: |
| 1334 | + nbits = pa_type.bit_width |
| 1335 | + if nbits == 32: |
| 1336 | + result = result.cast(pa.int32(), **cast_kwargs) |
| 1337 | + else: |
| 1338 | + result = result.cast(pa.int64(), **cast_kwargs) |
1330 | 1339 | result = result.cast(pa_type)
|
1331 | 1340 | if name in ["std", "sem"] and pa.types.is_temporal(pa_type):
|
1332 |
| - result = result.cast(pa.int64()) |
| 1341 | + result = result.cast(pa.int64(), **cast_kwargs) |
1333 | 1342 | if pa.types.is_duration(pa_type):
|
1334 | 1343 | result = result.cast(pa_type)
|
1335 | 1344 | elif pa.types.is_time(pa_type):
|
|
0 commit comments