首页 > 解决方案 > DatetimeIndex 无法执行 pandas 系列的操作中位数

问题描述

在计算系列中位数时,我看到“DatetimeIndex 无法执行操作中位数”的错误。对此有什么建议吗?谢谢。

复制代码如下。

import pandas as pd
import numpy as np

df = pd.DataFrame({'a': pd.date_range("2012", periods=3, freq='D')}) 
df['a'].median() 
...
TypeError: DatetimeIndex cannot perform the operation median 

标签: pythonpandas

解决方案


只有将列转换为原生 unix 时间格式、获取中值并转换回日期时间才可能:

df = pd.DataFrame({'a': pd.date_range("2012", periods=3, freq='D')}) 
m = np.median(df['a'].to_numpy().astype(np.int64)) 
print (pd.Timestamp(m))
2012-01-02 00:00:00

详情

print (df['a'].to_numpy().astype(np.int64))
[1325376000000000000 1325462400000000000 1325548800000000000]

另一个想法,谢谢@cs95:

print (pd.Timestamp(df['a'].astype(np.int64).median()))
2012-01-02 00:00:00

推荐阅读