我的数据框数据有3列 - 日期,细分和指标。我正在做以下事情:
data = pandas.read_csv("Filename.csv")
ave = data.groupby('Segment').mean() #works
ave = data.groupby('Segment').median() #gives error
ave['median'] = data.groupby('Segment').median()
Traceback (most recent call last):
File "<input>", line 1, in <module>
File "/usr/lib/pymodules/python2.7/pandas/core/frame.py", line 1453, in __setitem__
self._set_item(key, value)
File "/usr/lib/pymodules/python2.7/pandas/core/frame.py", line 1488, in _set_item
NDFrame._set_item(self, key, value)
File "/usr/lib/pymodules/python2.7/pandas/core/generic.py", line 301, in _set_item
self._data.set(key, value)
File "/usr/lib/pymodules/python2.7/pandas/core/internals.py", line 616, in set
assert(value.shape[1:] == self.shape[1:])
AssertionError
答案 0 :(得分:3)
你得到什么错误?
ave = data.groupby('Segment').median()
我认为这应该有用,也许你的数据中有一些东西导致错误,就像nan一样,我只是在猜测。您可以尝试应用自己的中值函数来查看是否可以解决错误的原因,例如:
def mymed(group):
return np.median(group.dropna())
ave = data.groupby('segment')['Metric'].apply(mymed)
如果您能提供一些复制错误的样本数据会更容易。
这是一种不同的方法,您可以将中位数添加回原始数据框,公制列的中位数变为:
data['metric_median'] = data.groupby('Segment')['Metric'].transform('median')
对于每个数据点附加的组的中位数来说,有用的取决于你之后要做的事情。
答案 1 :(得分:0)
我认为我们可以使用以下代码计算中位数。
print(data['segment'].median())
如果它不起作用,我们可能会尝试将平均值代替缺失数据,然后计算中位数。