私はPythonを初めて使用しました&パンダ。パンダ - DataFrameのどこでも値のインデックスを見つける
私のパンダのデータフレームに特定の値のインデックスがあります(これはsecurity_id
としましょう)。なぜなら、その列が始まるからです。 (列の上に無関係のデータを含む行数が不明で、左側に空の '列'が多数あります)
これまでのところ、isinメソッドはその値が存在するかどうか、そのインデックスではない。
この値のインデックスはどのようにして見つけられますか?
私はPythonを初めて使用しました&パンダ。パンダ - DataFrameのどこでも値のインデックスを見つける
私のパンダのデータフレームに特定の値のインデックスがあります(これはsecurity_id
としましょう)。なぜなら、その列が始まるからです。 (列の上に無関係のデータを含む行数が不明で、左側に空の '列'が多数あります)
これまでのところ、isinメソッドはその値が存在するかどうか、そのインデックスではない。
この値のインデックスはどのようにして見つけられますか?
あなたDATAFRAMEは、以下のようになっていることを仮定すると:
0 1 2 3 4
0 a er tfr sdf 34
1 rt tyh fgd thy rer
2 1 2 3 4 5
3 6 7 8 9 10
4 dsf wew security_id name age
5 dfs bgbf 121 jason 34
6 dddp gpot 5754 mike 37
7 fpoo werwrw 342 jack 31
は、次の操作を行います:
for row in range(df.shape[0]): # df is the DataFrame
for col in range(df.shape[1]):
if df.get_value(row,col) == 'security_id':
print(row, col)
break
ありがとう、これは解決策のようです:)行と列の両方を反復する値を見つける唯一の方法はありますか?より効率的な方法がありますか? – Kemeia
あなたが何をしていても、反復は常に関与します。あなたがそれをするか、そうでなければパンダがそれをするでしょう。内部的な反復は常に関与します。さらに、反復は一度停止し、IDを取得します。ワーストケースは、security_idがDataFrameの右下の要素(O(mn))である場合です。 security_idがDataFrameの左上半分にある場合は、コストがかかりません。 – Ujjwal
また、データのクリーニングを依頼しています。だから、それは安価な前処理ステップです。すべてをハイパー最適化しようとしないでください。早期最適化はすべての悪の根源です。覚えている。 – Ujjwal
この質問は、hereの前に聞かれた可能性があります。受け入れられた答えはかなり包括的で、列内の値のインデックスを見つけるのに役立ちます。
編集: 値が中に存在することカラムが知られていない場合は、あなたが使用できます。
for col in df.columns:
df[df[col] == 'security_id'].index.tolist()
与えられた質問では、列は分かっています。私の場合は、どの列に値が表示されるのかわかりません。しかし、私はそれが私の質問の答えに方向性を与えることに同意する – Kemeia
ああ、謝罪!データフレーム内の列の上をループし、上にリンクされた答えを適用することができます。 'for df.columns: df [df [col] == 'security_id']。index.tolist()'。これはまたあなたが探しているもののすべての出現を与えるでしょう。 –
ようこそStackOverflow。この記事を読むには、[素晴らしいパンダの例を提供する方法](http://stackoverflow.com/questions/20109391/how-to-make-good-reproducible-pandas-examples)と[最小で完全で検証可能な例](http://stackoverflow.com/help/mcve)を提供し、それに応じて質問を修正してください。良い質問をする方法(http://stackoverflow.com/help/how-to-ask)も役立つかもしれません。 – jezrael