0
私は毎月のデータをIDでグループ化していますが、これには親IDもあります。データは次のようになります。パンダの月間データを四半期毎に変換
data = pd.DataFrame({'parent_id': [1, 1, 1, 1, 1, 1, -99999, -99999, -99999],
'id': [123, 123, 123, 123, 123, 123, 123, 123, 123],
'data_1': [10, 20, 30, 40, 50, 60, 0, 0, 0],
'data_2': [10, 20, 30, 40, 50, 60, 0, 0, 0],
'period': [0, 1, 2, 3, 4, 5, 6, 7, 8],
'date': ['2017-06-30', '2017-07-31', '2017-08-31',
'2017-09-30', '2017-10-31', '2017-11-30',
'2017-12-31', '2018-01-31', '2018-02-28'],
'quarter': [0, 0, 0, 1, 1, 1, 2, 2, 2]})
data_2 = pd.DataFrame({'parent_id': [1, 1, 1, 1, 1, 1, -99999, -99999, -99999],
'id': [234, 234, 234, 234, 234, 234, 234, 234, 234],
'data_1': [10, 20, 30, 40, 50, 60, 0, 0, 0],
'data_2': [10, 20, 30, 40, 50, 60, 0, 0, 0],
'period': [0, 1, 2, 3, 4, 5, 6, 7, 8],
'date': ['2017-06-30', '2017-07-31', '2017-08-31',
'2017-09-30', '2017-10-31', '2017-11-30',
'2017-12-31', '2018-01-31', '2018-02-28'],
'quarter': [0, 0, 0, 1, 1, 1, 2, 2, 2]})
data = data.append(data_2)
data = data.reindex()
私は1つのIDを持っている時に働く機能を持っているが、私は、複数のIDを導入する場合、加算は1つのIDに固有のものではありません。
def convert_to_quarterly(df, date):
"""Aggregates 3 months of data to a quarterly value."""
columns = ['data_1', 'data_2']
df['date'] = pd.to_datetime(df['date'])
df = df.set_index('date')
df_quarterly = df.resample('Q')[columns].sum()
df_quarterly['date'] = df_quarterly.index
df['date'] = df.index
df.drop(columns, axis=1, inplace=True)
df = pd.merge(df, df_quarterly)
return df
convert_to_quarterly(data, date=pd.to_datetime('2017-06-30'))
個々のIDのグループのみでパンダの合計を作成するにはどうすればよいですか?
ありがとうございました!これは私が探していたものです!私はグループバイステップを逃したとは信じられません。あなたは命の恩人です!私はあなたの本を買うとあなたに従うことを確認します。助けてくれてありがとう! –
@TomCusack確かに。ご支援ありがとうございます。私は実際にこの問題のためにバグを発見しました。 resampleは 'on'パラメータを持っているので、' set_index'でインデックスに日付カラムを入れる必要はありませんが、この場合は動作しません。 [githubの問題についてはこちらを参照](https://github.com/pandas-dev/pandas/issues/17813) –