質問: ### 前提・実現したいこと pandasでエクセルファイルをDataFrameにし前処理を行っています。 ネットで調べると列の数値を比較条件(==、<、>)し行を抽出する方法はありますが この逆が見つからず困っています。 先月からプログラミング言語を始めた為、queryのようなやり方があれば教えて貰えませんか? ここに質問の内容を詳しく書いてください。 (例)PHP(CakePHP)で●●なシステムを作っています。 ■■な機能を実装中に以下のエラーメッセージが発生しました。 ### 発生している問題・エラーメッセージ ``` エラーメッセージ ``` ### 該当のソースコード ``` ソースコード ``` ### 試したこと ここに問題に対して試したことを記載してください。 ### 補足情報(FW/ツールのバージョンなど) ここにより詳細な情報を記載してください。
回答: 残念ながら、query式を使って**行を照会**するようなメソッドは存在しないかと思います。 どうしても行いたいのであれば ``` df.T.query('A > 0') ``` の様にDataFrameを転置(`.T`)して行と列を入れ替えた後に`query()`で操作を行う手もありますが、大抵indexの値としては**数値**を使用している事が多いため、query式を上手く記述でき ないのでは無いかと思います。 文字列で記述したquery式による照会する以外の方法でよいのであれば、「boolianリストを作ってフィルタリングを行う」方法が一番シンプルに記述できると思いますので、とりあえずその 方法で対応するのが良いかと思います。 下記のサンプルはDataFrameより「列毎の合計値が30以上の列を照会する」をフィルタリングで実現した例となります。 ``` import pandas as pd df = pd.DataFrame([[1,2,3],[4,5,6],[7,8,9],[10,11,12]], columns=['A','B','C']) print(df) # A B C #0 1 2 3 #1 4 5 6 #2 7 8 9 #3 10 11 12 # 列の合計が30以上の列を照会する result = df.loc[:, df.sum() >= 30] print(result) # C #1 3 #2 6 #3 9 #4 12 ```