按功能过滤熊猫索引

隐性的

我想通过沿索引的函数过滤熊猫数据框。我似乎找不到执行此操作的内置方法。

因此,从本质上讲,我具有一个函数,该函数可以通过一些任意复杂的方法来确定是否应包含特定索引,filter_func在本示例中将其称为我希望将以下代码的功能完全应用,但要应用到索引:

new_index = filter(filter_func, df.index)

并且仅包括filter_func允许的值索引也可以是任何类型。

这是数据操作的一个非常重要的因素,因此我想有一种内置的方法可以执行此操作。

和:

我发现按布尔值列表索引数据帧将满足我的要求,但仍需要索引空间的两倍才能应用过滤器。所以我的问题仍然存在,即是否有一种内置的方法不需要占用两倍的空间。

这是一个例子:

import pandas as pd
df = pd.DataFrame({"value":[12,34,2,23,6,23,7,2,35,657,1,324]})

def filter_func(ind, n=0):
    if n > 200: return False
    if ind % 79 == 0: return True
    return filter_func(ind+ind-1, n+1)

new_index = filter(filter_func, df)

我想这样做:

mask = []
for i in df.index:
    mask.append(filter_func(i))
df = df[mask]

但是这样做不会占用索引空间的两倍

ky

您可以使用map而不是filter,然后进行布尔索引:

df.loc[map(filter_func,df.index)]

   value
0     12
4      6
7      2
8     35

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章