[解決済み】Python Pandas。特定の値に一致するカラムを持つ行のインデックスを取得する
2022-03-24 06:53:35
質問
BoolCol列を持つDataFrameが与えられたとき、BoolCol列の値が真であるDataFrameのインデックスを求めたい。
現在、私はそれを行うために反復する方法を持っており、それは完全に動作します。
for i in range(100,3000):
if df.iloc[i]['BoolCol']== True:
print i,df.iloc[i]['BoolCol']
しかし、これは正しいパンダのやり方ではありません。 いろいろ調べた結果、現在はこのコードを使っています。
df[df['BoolCol'] == True].index.tolist()
これは、インデックスのリストを与えてくれますが、実行によってチェックすると、一致しません。
df.iloc[i]['BoolCol']
結果は、実はFalse!
Pandasでこれを行うには、どちらが正しいのでしょうか?
どのように解決するのですか?
df.iloc[i]
が返されます。
ith
の行
df
.
i
はインデックスラベルを参照しない。
i
は0基準のインデックスです。
それに対して
属性は
index
は実際のインデックスラベルを返します。
数値の行インデックスではありません。
df.index[df['BoolCol'] == True].tolist()
またはそれに準ずるもの。
df.index[df['BoolCol']].tolist()
を持つDataFrameで遊んでみると、その違いがよくわかると思います。 行の数値位置と等しくないデフォルトでないインデックスを指定します。
df = pd.DataFrame({'BoolCol': [True, False, False, True, True]},
index=[10,20,30,40,50])
In [53]: df
Out[53]:
BoolCol
10 True
20 False
30 False
40 True
50 True
[5 rows x 1 columns]
In [54]: df.index[df['BoolCol']].tolist()
Out[54]: [10, 40, 50]
インデックスを使用する場合 ,
In [56]: idx = df.index[df['BoolCol']]
In [57]: idx
Out[57]: Int64Index([10, 40, 50], dtype='int64')
を使用すると、行を選択することができます。
loc
の代わりに
iloc
:
In [58]: df.loc[idx]
Out[58]:
BoolCol
10 True
40 True
50 True
[3 rows x 1 columns]
注意事項
loc
は、ブーリアン配列も受け入れることができます。
:
In [55]: df.loc[df['BoolCol']]
Out[55]:
BoolCol
10 True
40 True
50 True
[3 rows x 1 columns]
ブーリアン配列がある場合。
mask
を使って計算することができます。
np.flatnonzero
:
In [110]: np.flatnonzero(df['BoolCol'])
Out[112]: array([0, 3, 4])
使用方法
df.iloc
は、序数で行を選択する。
In [113]: df.iloc[np.flatnonzero(df['BoolCol'])]
Out[113]:
BoolCol
10 True
40 True
50 True
関連
-
風力制御におけるKS原理を深く理解するためのpythonアルゴリズム
-
[解決済み】ImportError: sklearn.cross_validation という名前のモジュールがない。
-
[解決済み] 既存のDataFrameに新しい列を追加する方法は?
-
[解決済み] Pandas DataFrameの特定の列の値がNaNである行を削除する方法
-
[解決済み] pandasを使った "大量データ "ワークフロー【終了しました
-
[解決済み] pandasのDataFrameをCSVファイルに書き出す
-
[解決済み] PandasでDataFrameの行を列の値に基づいて削除する
-
[解決済み] pandasのデータフレームのインデックスをカラムに変換する方法
-
[解決済み] groupbyでグループ内の最大値を持つ行を取得する。
-
[解決済み】Pandas DataFrameのカラムヘッダからリストを取得する。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
opencvとpillowを用いた顔認証システム(デモあり)
-
Python関数の高度な応用を解説
-
Python カメの描画コマンドとその例
-
Python 可視化 big_screen ライブラリ サンプル 詳細
-
pyCaret効率化乗算器 オープンソース ローコード Python機械学習ツール
-
Pythonの画像ファイル処理用ライブラリ「Pillow」(グラフィックの詳細)
-
PythonでECDSAを実装する方法 知っていますか?
-
[解決済み】ImportError: sklearn.cross_validation という名前のモジュールがない。
-
[解決済み】Pythonスクリプトで「Expected 2D array, got 1D array instead: 」というエラーが発生?
-
[解決済み】 AttributeError("'str' object has no attribute 'read'")