1

私がやりたいことですがargmax、次の最初の値しか得られませんTrue:

Se = pd.Series(np.arange(6), index=list("abcdef"))
#a    0
#b    1
#c    2
#d    3
#e    4
#f    5
#dtype: int64

mask = (Se % 2 == 0)
#a     True
#b    False
#c     True
#d    False
#e     True
#f    False
#dtype: bool

mask.argmax()
#'a'

代わりに私がしなければならないこと:

Se[mask].index
# Index(['a', 'c', 'e'], dtype='object')

これはそれほど不便ではありませんがSeries、生産性を低下させる最初のものをインスタンス化する必要があります。これができるといいですね:

(pd.Series(np.arange(6), index=list("abcdef")) % 2 == 0).argmax()

私の質問は次のとおりです。これを使用してこれを行うにはどうすればよいargmaxですか? これが でできない場合argmax、 で別の関数を使ってこれを行うことはできpandasますか?

4

2 に答える 2

2

使用できますcompress

idx = pd.Series(np.arange(6), index=list("abcdef")).compress(lambda x: x % 2 == 0).index

結果の出力:

Index(['a', 'c', 'e'], dtype='object')
于 2016-11-11T23:15:48.090 に答える