我想通过沿索引的函数过滤熊猫数据框。我似乎找不到执行此操作的内置方法。
因此,从本质上讲,我具有一个函数,该函数可以通过一些任意复杂的方法来确定是否应包含特定索引,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]
但是这样做不会占用索引空间的两倍
您可以使用map而不是filter,然后进行布尔索引:
df.loc[map(filter_func,df.index)]
value
0 12
4 6
7 2
8 35
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句