如何在 Pandas 中实现过滤数据帧的语法?( df[df.column1 > someValue]
)
在过滤数据帧时,我正在尝试创建一个与 Pandas 具有相同语法的类。
如何复制这样的 Dataframe 的语法df = DataFrame(someData)
:
df[df.column1 > someValue]
我实现了方法__getattr__
和__getitem__
语法
df.column1
df['column1']
但我不知道如何将两者联系在一起。另外,我找不到从 Pandas 代码中复制的功能。
对此问题的实现或对 Pandas 中函数的引用都会有很大帮助。
编辑:(解决方案)
按照答案的提示,我实现了__getitem__
如下功能:
from tier tools import compress
def __getitem__(self, name):
"""Get items with [ and ]
"""
#If there is no expression, return a column
if isinstance(name, str):
return self.data[name]
#if there was an expression return the dataframe filtered
elif isinstance(name, list):
ind = list(compress(range(len(name)), name))
temp = DataFrame([[self.data[c].values[i]
for i in ind]
for c in self.columns],
columns=self.columns)
return temp
请注意,我还必须为我的列类(系列)实现比较方法。完整的代码可以在这里看到。