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()
내가 한 ID가있는 경우에 작동하는 기능을 가지고,하지만 난 하나 개 이상의 ID를 소개 할 때, 합산 한 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 그룹에 대해서만 팬더 금액을 합산하려면 어떻게해야합니까?
정말 고마워요! 이것은 내가 찾고 있었던 바로 그 것이다! 나는 groupby 단계를 놓친 것을 믿을 수 없다. 너는 생명의 은인이야! 나는 당신의 책을 사고 당신을 따르게 될 것입니다. 도와 주셔서 감사합니다! –
@TomCusack 확실한 것. 도와 주셔서 감사합니다. 이 문제 때문에 실제로 버그를 발견했습니다. resample에는'on' 매개 변수가 있기 때문에'set_index'를 사용하여 인덱스에 날짜 열을 넣을 필요는 없습니다. 그러나이 경우에는 작동하지 않습니다. [github 문제는 여기를 참조하십시오] (https://github.com/pandas-dev/pandas/issues/17813) –