2016-07-26 10 views
3

パンダはバージョン18.1でリサンプルAPIを変更しました。削減メソッドは、もはやリサンプルメソッドの引数ではありませんが、独自のメソッドです。変数のメソッドを使用したパンダのリサンプル

例:私は新しいAPIでこれを行うにはどうすればよい

def my_func(my_series, how="sum"): 
    #Do some stuff before 
    my_series.resample('5Min' how=how) 

import pandas as pd 
import numpy as np 

rng = pd.date_range('1/1/2012', periods=100, freq='S') 
ts = pd.Series(np.random.randint(0, 500, len(rng)), index=rng) 

#Old API 
ts.resample('5Min', how='sum') 

#New API 
ts.resample('5Min').sum() 

私はこのように行動したいくつかのコードを持っていましたか? my_funcは、さまざまな削減方法でresampleメソッドを呼び出すことができます。

1つのanswerは、「ハウ」が単なる集約関数である場合、既にケースをカバーしています。私は、アップサンプリングを実行したい場合をもっと念頭に置いていました。

例えば:

def my_func(dummy_df, freq="10Min", how="last", label="right", closed="right", fill_method="ffill"): 
    dummy_df.resample(freq, how=how, label=label, closed=closed, fill_method=fill_method) 

と新しいAPIで再びそれを書きたい:私の実際のコードに私はこれまでより近いものを持っていることを

#Old API: 
ts.resample('250L', fill_method='ffill') 
#New API 
ts.resample('250L').ffill() 

注意。

は紛らわしいまだdocumentation(2016年7月26日)は、このラインを持っています

派遣を経由して利用できる任意の関数は、合計、平均値、STD、SEM、MAX、MINを含む、名前によってどのようにパラメータを付与することができます、中央値、最初、最後、オハイオ州。

ただし、howのパラメータは廃止予定となっています。 Resampler.agg

答えて

1

howfill_methodを分離し、getattrを介してそれらを渡す:

def my_func(dummy_df, freq="10Min", how="last", 
      label="right", closed="right", fill_method="ffill"): 
    resample = dummy_df.resample(freq, label=label, closed=closed) 
    return getattr(getattr(resample, how)(), fill_method)() 
3

ソリューション:

print (ts.resample('5Min').agg('sum')) 

print (ts.resample('5Min').sum()) 
2012-01-01 24223 
Freq: 5T, dtype: int32 

print (ts.resample('5Min').agg('sum')) 
2012-01-01 24223 
Freq: 5T, dtype: int32 

だから、カスタム関数は次のとおりです。

def my_func(my_series, how="sum"): 
    #Do some stuff before 
    return my_series.resample('5Min').agg(how) 

print (my_func(ts)) 
2012-01-01 24223 
Freq: 5T, dtype: int32 
+0

非常にシンプルでエレガント! – MaxU

+0

@マックス - ありがとうございます。 – jezrael

関連する問題