Python 我怎么做熊猫';s mean方法用于自定义类型

Python 我怎么做熊猫';s mean方法用于自定义类型,python,pandas,dataframe,Python,Pandas,Dataframe,我正在尝试创建一个“数值”类(我们称之为MyType),Panda的mean完全适用于该类 我当前的方法将MyType实现为numbers.Rational的子类 class MyType(numbers.Rational): ... 这使得Python的统计信息模块能够正常工作,没有任何问题 from statistics import mean result = mean([MyType(1), MyType(2)]) assert isinstance(result, MyType

我正在尝试创建一个“数值”类(我们称之为
MyType
),Panda的
mean
完全适用于该类

我当前的方法将
MyType
实现为
numbers.Rational
的子类

class MyType(numbers.Rational):
   ...
这使得Python的
统计信息
模块能够正常工作,没有任何问题

from statistics import mean
result = mean([MyType(1), MyType(2)])
assert isinstance(result, MyType) #passes
不幸的是,Pandas中的类似代码返回一个float,而不是
MyType
的实例

result = pd.Series([MyType(1),MyType(2)]).mean()
assert isinstance(result, MyType) #fails
assert isinstance(result, float) #passes
当单步执行Panda的内部代码时,第563行的
\u sure\u numeric
方法似乎将
MyType
转换为
nanops
模块()的
nanmean
方法中的浮点。我找不到一个办法来解决这个问题

我所尝试的:

  • MyType
    数字的子类。Real——所有计算都是正确的,但类型是错误的
  • MyType
    float的子类——所有计算都是正确的,但类型是错误的
  • MyType
    ExtensionDtype的子类——就我所知,似乎没有做任何事情

  • cyberpandas
    库为IP地址@jakub实现了类似的功能是的,我看过他们的库。他们使用的是
    ExtensionDtypes
    ,但他们的IP地址不是数字类型,所以他们从未尝试测试任何统计方法,就我所知。Panda的开箱即用的
    ExtensionDtypes
    也都不是数字。CyberPanda的
    library已经为IP地址@jakub实现了类似的功能。是的,我已经查看了它们的库。他们使用的是
    ExtensionDtypes
    ,但他们的IP地址不是数字类型,所以他们从未尝试测试任何统计方法,就我所知。Panda的开箱即用
    ExtensionDtypes
    也都不是数字。