0

以下は、私がやろうとしていることの最小限の例です。次のように、マルチインデックスを持つ pandas DataFrame があります。

import pandas as pd
import numpy as np

arrays = [['bar', 'bar', 'baz', 'baz', 'foo', 'foo', 'qux', 'qux'],
          ['one', 'two', 'one', 'two', 'one', 'two', 'one', 'two']]
tuples = list(zip(*arrays))
index = pd.MultiIndex.from_tuples(tuples, names=['first', 'second'])
s = pd.DataFrame(np.random.randn(8,2), index=index)

だから私が持っているDataFrameは

                     0         1
first second                    
bar   one    -3.174428 -0.314160
      two     0.968316  0.278967
baz   one     0.171292 -0.789257
      two     1.420621  0.100964
foo   one    -1.001074 -0.517729
      two    -0.211823  0.951422
qux   one     1.173289  0.313692
      two    -0.159855  0.149710

私が望むのは、インデックス「秒」が2に等しいすべての観測を-1に設定することです。私が念頭に置いているのは、.loc を次のように使用することです。

s.loc[(:,'two')]

しかし、.loc は ":" 演算子を受け入れません。

誰かがここで助けてくれますか?

4

1 に答える 1