如何获取PyArrow dtype的Pandas Timedelta中的秒数?
Pandas 2.1.3中PyArrow Duration类型转秒数的解决方案
PyArrow的duration[ns][pyarrow]不属于Pandas的datetimelike范畴,所以无法直接用.dt访问器调用total_seconds(),以下是几种可行解决方案:
使用PyArrow原生计算函数
借助pyarrow.compute模块的duration_seconds()直接处理PyArrow数组,再转回Pandas Series:import pyarrow.compute as pc # 替换为你的DataFrame和列名 df['DURATION_SECONDS'] = pc.duration_seconds(df['DURATION_NEW'].array).to_pandas()临时转换为NumPy timedelta类型
如果可以接受临时转成传统NumPy dtype,先转换再用熟悉的.dt方法:df['DURATION_SECONDS'] = df['DURATION_NEW'].astype('timedelta64[ns]').dt.total_seconds()使用Pandas的Arrow访问器
Pandas 2.0+支持通过.arrow访问器直接调用PyArrow的计算能力,写法更简洁:df['DURATION_SECONDS'] = df['DURATION_NEW'].arrow.compute('duration_seconds').to_pandas()
目前Pandas对PyArrow原生类型的.dt访问器支持不完善,优先推荐前两种方案,尤其是第一种纯PyArrow的处理方式,性能更优。
内容的提问来源于stack exchange,提问作者ivegotaquestion
相关产品推荐
相关产品推荐

