【问题标题】:DatetimeIndex cannot perform the operation median for pandas seriesDatetimeIndex 无法执行 pandas 系列的操作中位数
【发布时间】:2020-07-07 06:13:13
【问题描述】:

在计算系列中位数时,我看到“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 

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    只有将列转换为原生 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
    

    【讨论】:

    • pd.Timestamp(df['a'].astype(int).median())?
    • @cs95 - 我得到了TypeError: cannot astype a datetimelike from [datetime64[ns]] to [int32]
    • @cs95 - 我认为它似乎依赖于熊猫版本,对我来说工作 np.int64 而不是 int
    • 所以 int64 有效但 int 无效?它可能是 1.1 中的增强功能(我正在使用)。
    • 跟进:为什么不适用于 Series 中位数,但适用于 pandas 中位数?
    猜你喜欢
    • 2018-06-14
    • 2020-06-21
    • 2010-10-17
    • 2021-09-17
    • 1970-01-01
    • 2020-08-12
    • 2018-11-28
    • 1970-01-01
    • 2015-02-25
    相关资源
    最近更新 更多