0
私は異なるグループに分けることができる列を持つDataFrameを持っています。エントリが元の値からグループ平均を差し引いたdfを返す必要があります。
groupbyを使って私は以下のことを行いました。DataFrameはグループ単位で減算することを意味します。
base = datetime.today().date()
date_list = [base - timedelta(days=x) for x in range(0, 10)]
df = pd.DataFrame(data=np.random.randint(1, 100, (10, 8)), index=date_list, columns=['a1', 'a2', 'b1', 'a3', 'b2', 'c1' , 'c2', 'b3'])
xx = df.loc[[datetime(2016, 5, 18).date()]]
xx.index = ['group']
xx.a1 = 1
xx.a2 = 1
xx.a3 = 1
xx.b3 = 2
xx.b2 = 2
xx.b1 = 2
xx.c1 = 3
xx.c2 = 3
df = df.append(xx)
dft = df.T
dft.groupby(['group']).mean().T
更新20/05/16:unutbuの答えによって支援
、私は同様に、次の解決策を考え出す:
fTgroupby(グループ、軸= 0).apply(ラムダX :X - np.mean(x))をT
感謝を得ています。 .transform行を実行すると、「長さの不一致:期待される軸に10個の要素があり、新しい値に8個の要素があります」というエラーが表示されます。私はPython 2.7を使用しています – wh408
私は解決策を得ました:df.T.groupby(group、axis = 0).apply(lambda x:x-np.mean(x))。興味深いことに、groupby.aggregate/transform/applyについては、apply()に軸オプションがないところはあまり見つからないので、2回変換する必要があります。 – wh408