python - 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
解决方案
只有将列转换为原生 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