我相信有一个明显的方法来做到这一点,但不能想到任何圆滑的现在。

基本上,而不是引发异常,我想获得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')

当前回答

多索引的工作方式与单索引略有不同。这里有一些多索引数据帧的方法。

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'])

在df。索引仅在检查单个索引值时才适用于第一层。

'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

登记df。索引组合元组的索引。

('a', 'X') in df.index  # True
('a', 'Y') in df.index  # False

其他回答

多索引的工作方式与单索引略有不同。这里有一些多索引数据帧的方法。

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'])

在df。索引仅在检查单个索引值时才适用于第一层。

'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

登记df。索引组合元组的索引。

('a', 'X') in df.index  # True
('a', 'Y') in df.index  # False

只是作为参考,因为这是我正在寻找的东西,您可以通过附加"来测试值或索引中的存在。方法,例如:

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

我发现加上“。”使用其他python工具来获取简单的列表或ndarray out使存在或“in”检查更顺利地运行。我只是想把这个说给大家听。

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") 

with 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

but:

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

很有趣:D

这应该能奏效

'g' in df.index