1

次のようなコードを実行すると:

import pandas as pd

A = pd.DataFrame([('a', -1.374201, 35),
                  ('b', 1.415697, 29),
                  ('a', 0.233841, 18),
                  ('b', 1.550599, 30),
                  ('a', -0.178370, 63),
                  ('b', -1.235956, 42),
                  ('a', 0.088046, 2),
                  ('b', 0.074238, 84)], columns='key value other'.split())

B = A.groupby('key')['value'].mean()

C = pd.DataFrame([('a', 0.469924, 44),
                  ('b', 1.231064, 68),
                  ('a', -0.979462, 73),
                  ('b', 0.322454, 97)], columns='key value other'.split())

D = C.set_index('key')
D['value'] -= B

...最後の行はエラーで失敗します:

Exception: Reindexing only valid with uniquely valued Index objects

私は何を間違っていますか?

4

1 に答える 1

3

あなたの例に正しく従えば(追加してくれてありがとう、BTW)、必要なものは次のように簡単だと思います:

D.sub(B, axis='index')

それは私に与えます:

In [29]: D.sub(B, axis='index')
Out[29]: 
        value      other
key                     
a    0.777595  44.307671
a   -0.671791  73.307671
b    0.779919  67.548856
b   -0.128690  96.548856

ご覧のとおり、これによりother列が台無しになります。それが問題である場合は、残念ながら、同じ重複インデックスの状況に戻っています。

于 2013-03-12T19:25:40.513 に答える