Pandas でデータフレームをフィルタリングするための構文を実装するにはどうすればよいですか? ( df[df.column1 > someValue]
)
データフレームをフィルタリングするときに Pandas と同じ構文を持つクラスを作成しようとしています。
このようなデータフレームの構文を複製するにはどうすればよいです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
列クラス (シリーズ) の比較メソッドも実装する必要があることに注意してください。完全なコードはここで見ることができます。