パネルに2つのパンダデータフレームがあり、最初のdf(行単位)をランク付けする第3のdfを作成したいが、 dfは真です。いくつかのサンプルデータを説明するために:私はいくつかの醜いハックでこれを行うために管理しているが、まだランクが私は非数値データに「最初の」=メソッドを使用させないであろうという事実にはまり込むパネル内の他のブール値のデータフレームに従ったインクリメントランクのパンダデータフレーム
p['x']
A B C D E
2015-12-31 0.957941 -0.686432 1.087717 1.363008 -1.528369
2016-01-31 0.079616 0.524744 1.675234 0.665511 0.023160
2016-02-29 -0.300144 -0.705346 -0.141015 1.341883 0.855853
2016-03-31 0.435728 1.046326 -0.422501 0.536986 -0.656256
p['y']
A B C D E
2015-12-31 True False True False NaN
2016-01-31 True True True False NaN
2016-02-29 False True True True NaN
2016-03-31 NaN NaN NaN NaN NaN
。ブール値dfにTrueを持たないセルに対しては、増分整数ランク(重複していても)とNaNを強制したい。
出力の形式は次のようになります。
A B C D E
2015-12-31 2.0 NaN 1.0 NaN NaN
2016-01-31 3.0 2.0 1.0 NaN NaN
2016-02-29 NaN 3.0 2.0 1.0 NaN
2016-03-31 NaN NaN NaN NaN NaN
私のハッキングの試みは以下の通りです。 NaNとfalseを置き換えるには、はっきりとした方法が必要ですが、動作します。しかし、一度メソッド= 'first'を追加すると動作しません。重複した値のインスタンスがある可能性があるので、これは必要です。
# I first had to hack a replacement of False with NaN.
# np.nan did not evaluate correctly
# I wasn't sure how else to specify pandas NaN
rank=p['Z'].replace(False,p['Z'].iloc[3,0])
# eliminate the elements without a corresponding True
rank=rank*p['X']
# then this works
p['rank'] = rank.rank(axis=1, ascending=False)
# but this doesn't
p['rank'] = rank.rank(axis=1, ascending=False, method='first')
ご協力いただければ幸いです。 おかげ
- リスト項目
あなたが第三DFの所望の結果を共有することができます...何をされます一度私はメソッド= 'first'をランクのパラメータに追加します。何らかの理由で、 '最初の'パラメータが私の(醜い)実装ではうまくいかないでしょう。 – nitin