我确信有一种明显的方法可以做到这一点,但现在无法想到任何光滑的东西。
基本上我没有提出异常,而是希望True
或False
查看pandas 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')
答案 0 :(得分:180)
这应该可以解决问题
'g' in df.index
答案 1 :(得分:30)
仅供参考,因为它是我正在寻找的东西,你可以通过附加“.values”方法测试值或索引中的存在,例如。
g in df.<your selected field>.values
g in df.index.values
我发现添加“.values”以获得一个简单的列表或ndarray out存在或“in”检查使用其他python工具更顺畅地运行。我以为我会把它扔给别人。
答案 2 :(得分:20)
多索引与单个索引略有不同。以下是多索引数据框的一些方法。
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
在df.index
中检查索引组合元组。
('a', 'X') in df.index # True
('a', 'Y') in df.index # False
答案 3 :(得分:2)
下面的代码不输出布尔值,但允许按索引对数据框进行子集设置...我知道这可能不是解决问题的最有效方法,但是我(1)喜欢这种方式,而(2)可以轻松地将df2中存在df1索引的子集:
df3 = df1[df1.index.isin(df2.index)]
或df2中不存在df1索引的地方...
df3 = df1[~df1.index.isin(df2.index)]
答案 4 :(得分:1)
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")
答案 5 :(得分:0)
使用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