Python 带对象的数据帧平均值
我有一个带有2列nbr和tag的数据框。Nbr包含整数和标记包含标记对象 我想得到所有标记对象的平均值(使用value属性,结果是一个具有该值的新标记) 对于Python 带对象的数据帧平均值,python,pandas,object,mean,Python,Pandas,Object,Mean,我有一个带有2列nbr和tag的数据框。Nbr包含整数和标记包含标记对象 我想得到所有标记对象的平均值(使用value属性,结果是一个具有该值的新标记) 对于dataframe.add我有一个将\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu。 例如: 但是对于frame.tag.mean()我得到了这个错误TypeError:无法转换成数字。 Pandas首先尝试将对象转换为浮点:float(x),如果
dataframe.add
我有一个将\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu。
例如:
但是对于frame.tag.mean()
我得到了这个错误TypeError:无法转换成数字。
Pandas首先尝试将对象转换为浮点:float(x)
,如果失败,则尝试此:x=complex(x)
我的问题是,通过向标记类添加一个方法(就像我对\uuuu add\uu
所做的那样),它们可以使浮动(tag\u object)
或复杂(tag\u object)
返回value属性
提前感谢。查看源代码,熊猫的平均值似乎将结果强制为数字类型
您可以通过添加to标记来接近:
import pandas as pd
class Tag(object):
def __init__(self, value):
self.value = value
def __add__(self, other):
return Tag(self.value + other.value)
def __float__(self):
return float(self.value)
一旦你这么做了,你就会
a = Tag(2)
b = Tag(8)
frame = pd.DataFrame({
'tag': [a, b],
'nbr': [3, 6]
})
new_tag = frame.tag.mean()
>>> print(new_tag)
5.0
请注意,这并不完全符合您的要求(它不会创建一个值为5.0的标记
——Pandas希望结果为数字类型)。是否要获取所有相等标记对象的平均值?然后尝试frame.groupby('tag').mean()否我想知道所有标记对象的value属性的平均值您正在数据帧中引入一种不同的类型,即用户定义的标记对象(它本身就是类对象!)。您的示例看起来非常简单,因此看起来像。提供更多信息。标签到底是什么?
a = Tag(2)
b = Tag(8)
frame = pd.DataFrame({
'tag': [a, b],
'nbr': [3, 6]
})
new_tag = frame.tag.mean()
>>> print(new_tag)
5.0