给定一个带有“BoolCol”列的DataFrame,我们想要找到DataFrame的索引,其中“BoolCol”的值== True
我目前有迭代的方法来做到这一点,效果很好:
for i in range(100,3000):
if df.iloc[i]['BoolCol']== True:
print i,df.iloc[i]['BoolCol']
但这不是正确的 pandas 方法。经过一番研究,我目前正在使用此代码:
df[df['BoolCol'] == True].index.tolist()
这个给了我一个索引列表,但是当我通过以下方式检查它们时它们不匹配:
df.iloc[i]['BoolCol']
结果居然是假的!!
哪一种是正确的熊猫方式来做到这一点?
原文由 I want badges 发布,翻译遵循 CC BY-SA 4.0 许可协议
df.iloc[i]
返回ith
行df
。i
不引用索引标签,i
是从0开始的索引。相反, 属性
index
返回实际索引标签,而不是数字行索引:或等效地,
通过使用具有不等于行的数字位置的非默认索引的 DataFrame,您可以非常清楚地看到差异:
如果你想使用索引,
然后您可以使用
loc
而不是iloc
选择行:请注意
loc
也可以接受布尔数组:如果您有一个布尔数组
mask
并且需要序数索引值,则可以使用np.flatnonzero
计算它们:使用
df.iloc
按序号索引选择行: