2017-12-07 11 views
4

日付は列としてdataframeです。私は毎日から毎月の水準に値を平均したいと思います。私はTime GrouperとResampleで試してみましたが、列名が文字列であるのが好きではなく、DatetimeIndexのような列を作成する方法を理解できるようです。日付列のパンダ再サンプリング

私の出発データフレーム:

import pandas as pd 

df = pd.DataFrame(data=[[1,2,3,4],[5,6,7,8]], 
        columns=['2013-01-01', '2013-01-02', '2013-02-03', '2013-02-04'], 
        index=['A', 'B']) 

所望の出力:

2013-01-01 2013-02-01 
A   1.5   3.5 
B   5.6   7.5 

答えて

4

あなたは私はあなたの希望する出力理解しないresample

df.columns = pd.to_datetime(df.columns) 
df.T.resample('M').mean().T 
Out[409]: 
    2013-01-31 2013-02-28 
A   1.5   3.5 
B   5.5   7.5 

それともgroupby

axis=1 
df.groupby(pd.to_datetime(df.columns).to_period('M'),1).mean() 
Out[412]: 
    2013-01 2013-02 
A  1.5  3.5 
B  5.5  7.5 
1

は、最初の日付に列名を変換してみてください。

df = pd.DataFrame(data=[[1,2,3,4],[5,6,7,8]], columns=pd.to_datetime(['2013-01-01', '2013-01-02', '2013-02-03', '2013-02-04']), index=['A', 'B']) 

はそれが役に立てば幸い!

4

まず、pd.to_datetimeでdatetime型に列インデックスを変換し、その後、pd.GrouperTgroupbyを使う(pd.TimeGerouper is deprecated使用pd.Grouperに注意してください):

df.columns = pd.to_datetime(df.columns) 
df.T.groupby(by=pd.Grouper(freq='MS')).mean().T 

出力:

2013-01-01 2013-02-01 
A   1.5   3.5 
B   5.5   7.5 
4

あなたが利用することができますpd.PeriodIndex

In [145]: df.groupby(pd.PeriodIndex(df.columns, freq='M'), axis=1).mean() 
Out[145]: 
    2013-01 2013-02 
A  1.5  3.5 
B  5.5  7.5 
+1

@MaxU Aをgree :-) – Wen

+0

今、私は理解しています..あなたの方法はもっと素敵です:-)新しいことを学ぶ:〜)ありがとうたくさん – Wen

+0

@Wen、ありがとう! :) – MaxU

1
import pandas as pd 

list=df.columns 
df_new = pd.DataFrame() 

for i in range(int(0.5*len(list))): 
    df_new[list[2*i]] = (df[[list[2*i], list[2*i+1]]].mean(axis=1)) 

出力

 2013-01-01 2013-02-03 
A   1.5   3.5 
B   5.5   7.5 

いずれかを使用することができます

+0

それは毎月の平均です。 – stucash

+0

はい、2013-01-01の場合、平均は1.5((1 + 2)/ 2)と5.5((5 + 6)/ 2)ですが、2013-02-01の平均は2.5です((2 + 3)/ 2)と6.5((6 + 7)/ 2)を使用し、3.5((3 + 4)/ 2)と7.5((7 + 8)/ 2)を使用します。 – Manuel

+0

それは毎日ではありません。それは毎月です。答えの下に見て、インデックスは '月'にあります。 1月および2月1月の列Aは、(1 + 2)/ 2 = 1.5のアバレージを有する。 2月のA列の平均値は(3 + 4)/ 2 = 3.5です。あなたは私が信じる残りの部分を手に入れます。 – stucash

関連する問題