给定一个带有"BoolCol"列的DataFrame,我们想要找到DataFrame的索引,其中"BoolCol"的值== True
我目前有迭代的方式来做到这一点,它完美地工作:
for i in range(100,3000):
if df.iloc[i]['BoolCol']== True:
print i,df.iloc[i]['BoolCol']
Run Code Online (Sandbox Code Playgroud)
但这不是正确的熊猫方式.经过一些研究,我目前正在使用此代码:
df[df['BoolCol'] == True].index.tolist()
Run Code Online (Sandbox Code Playgroud)
这个给了我一个索引列表,但是当我通过执行以下操作检查它们时它们不匹配:
df.iloc[i]['BoolCol']
Run Code Online (Sandbox Code Playgroud)
结果实际上是假的!!
这是正确的熊猫方式吗?
之前已经问过这个问题的变化,我仍然无法理解如何根据我想要设置的条件实际切片python系列/ pandas数据帧.
在R中,我要做的是:
df[which(df[,colnumber] > somenumberIchoose),]
Run Code Online (Sandbox Code Playgroud)
which()函数在数据框的列中查找大于somenumberIchoose的行的条目索引,并将其作为向量返回.然后,我使用这些行索引对数据帧进行切片,以指示我想在新表单中查看哪些数据帧行.
在python中有相同的方法吗?我已经看过枚举的引用,在阅读文档后我并不完全理解.我的示例为了获得行索引,现在看起来像这样:
indexfuture = [ x.index(), x in enumerate(df['colname']) if x > yesterday]
Run Code Online (Sandbox Code Playgroud)
但是,我继续收到无效的语法错误.我可以通过循环遍历值,并自己手动进行搜索来破解解决方法,但这似乎非常非pythonic和低效.
枚举()究竟是做什么的?什么是在矢量中找到满足所需参数的值索引的pythonic方法?
注意:我正在使用Pandas作为数据帧
再次认识到这与SO上的一些其他问题类似但我无法为我的目的转换.例如.用下面的代码片段
import re
a = ['rhubarb','plain custard','jam','vanilla custard','pie','cheesecake']
s = re.compile('custard')
Run Code Online (Sandbox Code Playgroud)
我希望能够得到一份清单
[2,4]
这是两个custard字符串的索引.我认为下面的问题会有所帮助,但我无法弄清楚如何在这里应用它.