web-dev-qa-db-ja.com

値がパンダデータフレームインデックスに存在するかどうかを確認します

これを行う明白な方法があると確信していますが、今はなめらかなことを考えてはいけません。

基本的に例外を発生させる代わりに、値がパンダのTrueインデックスに存在するかどうか見るためにFalseまたはdfを取得したいです。

import pandas as pd
df = pd.DataFrame({'test':[1,2,3,4]}, index=['a','b','c','d'])
df.loc['g']  # (should give False)

私が今働いているのは以下の通りです

sum(df.index == 'g')
102
Abhi

これでうまくいくはずです

'g' in df.index
183

私が探していたものなので参考のために、 "。value"メソッドを追加することで値やインデックス内の存在をテストすることができます。

g in df.<your selected field>.values
g in df.index.values

私は、単純なリストやndarray outを得るために ".values"を追加することが存在するか、 "in"チェックが他のpythonツールでよりスムーズに実行されることを見つけました。私は人々のためにそこにそれを投げたいと思っただけで。

30

マルチインデックスはシングルインデックスとは少し異なります。これがマルチインデックスデータフレームのいくつかの方法です。

df = pd.DataFrame({'col1': ['a', 'b','c', 'd'], 'col2': ['X','X','Y', 'Y'], 'col3': [1, 2, 3, 4]}, columns=['col1', 'col2', 'col3'])
df = df.set_index(['col1', 'col2'])

in df.indexは単一のインデックス値をチェックするときだけ最初のレベルのために働きます。

'a' in df.index     # True
'X' in df.index     # False

他のレベルについてはdf.index.levelsを確認してください。

'a' in df.index.levels[0] # True
'X' in df.index.levels[1] # True

インデックスの組み合わせTupleについてはdf.indexを確認してください。

('a', 'X') in df.index  # True
('a', 'Y') in df.index  # False
20
broccoli2000
df = pandas.DataFrame({'g':[1]}, index=['isStop'])

#df.loc['g']

if 'g' in df.index:
    print("find g")

if 'isStop' in df.index:
    print("find a") 
1
Gank

dataFrameで:df_data

>>> df_data
  id   name  value
0  a  ampha      1
1  b   beta      2
2  c     ce      3

私は試した:

>>> getattr(df_data, 'value').isin([1]).any()
True
>>> getattr(df_data, 'value').isin(['1']).any()
True

しかし:

>>> 1 in getattr(df_data, 'value')
True
>>> '1' in getattr(df_data, 'value')
False

とても楽しい:D

0
Quoc Chi