1

日付、セグメント、メトリックの 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
4

2 に答える 2

3

どのようなエラーが発生しますか?

ave = data.groupby('Segment').median()

私はそれがうまくいくはずだと思います.おそらくあなたのデータにはナンのようなエラーを引き起こしているものがあります. 次のような独自の中央値関数を適用して、エラーの原因を回避できるかどうかを確認できます。

def mymed(group):
    return np.median(group.dropna())

ave = data.groupby('segment')['Metric'].apply(mymed)

エラーを再現するサンプルデータを提供できれば簡単です。

これは別のアプローチです。中央値を元のデータフレームに戻すと、メトリック列の中央値は次のようになります。

data['metric_median'] = data.groupby('Segment')['Metric'].transform('median')

グループの中央値を各データポイントに関連付けることが有用かどうかは、後で何をしたいかによって少し異なります。

于 2012-10-25T10:33:04.497 に答える