最初の質問:私自身のメソッドや関数でデータフレームクラスを
私はパンダで働いているデータフレームと、私は頻繁にデータの前処理や他の部分と同じルーチンを実行していますもの。これらのルーチンのいくつかを、というクラスのメソッドとして、pandas.DataFrame
まで拡張したいと思います。私はこれについてどうやって行くのか分かりません。それはpandas.DataFrame
から継承されていますように、これまでのところ、私は私の新しいクラス内の任意の__init__
を書いていないよ:
import pandas
class ExtendedDataframe(pandas.DataFrame):
def some_method(self):
blahblah
これは明らかに継承によってExtendedDataframe
のインスタンスを作成するために私を可能にします。しかし、私は通常pandas.read_csv
のようなものでデータをロードしています。これは古典的なDataFrame
を返します。どのように標準のDataFrame
で提供されるものの上に、私の独自のメソッドを使用するために、そのようなCSVデータを読み込み、ある時点でExtendedDataframe
に入れることができますか?ローディングフェーズで標準DataFrame
が返されてExtendedDataframe
に変換されても問題ありません。
2番目の質問:
わけではありません、私が使用しているすべてのパンダの機能は、データフレームのメソッドです。いくつかは、DataFramesを引数として取る関数、たとえばpandas.merge
です。どうすればそのような関数の使用を私のExtendedDataframe
クラスのインスタンスにまで拡張できますか?言い換えれば、もしdf1
とdf2
はExtendedDataframe
の2つのインスタンスは、私はちょうどそれがDataFrame
の標準インスタンスの場合と同様に
pandas.merge([df1, df2], ...)
作品を作るのですか、ですか?
これは確かに可能な解決策です、ありがとう!そうでなければ、組み込みクラスに単にメソッドや属性を追加する一般的な方法がありますか? – Ben
あなたが実行する問題は、組み込みのメソッドを呼び出すと、カスタムのものではない通常のDataFrameを返します。 –
だから、唯一の解決策は、組み込みのクラス自体を変更することです(私はやりたいとは思わない)。 – Ben