DataFrame.pivot_table()
を使用して
python
1df.pivot_table(index=[df.index.strftime('%m/%d'), 'キャンペーン'],
2 columns=df.index.year, values='費用')
のように処理することで
日付 | キャンペーン | 2019 | 2020 |
---|
01/01 | testA | 500 | 1000 |
01/01 | testB | 1000 | 2000 |
01/02 | testA | 500 | 1000 |
01/02 | testB | 1000 | 2000 |
のようなデータフレームを得ることができますので、あとはご自由に加工するとよいかと思います。
https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.pivot_table.html#pandas.DataFrame.pivot_table
とりあえず、以下に動作サンプルを書きましたので参考にしてください。
Python
1import pandas as pd
2import io
3
4data = """
5日付,キャンペーン,費用
62020-01-01,testA,1000
72020-01-02,testA,1000
82019-01-01,testA,500
92019-01-02,testA,500
102020-01-01,testB,2000
112020-01-02,testB,2000
122019-01-01,testB,1000
132019-01-02,testB,1000
14"""
15
16df = pd.read_csv(io.StringIO(data), parse_dates=['日付'], index_col='日付')
17print(df)
18
19ret = df.pivot_table(index=[df.index.strftime('%m/%d'), 'キャンペーン'],
20 columns=df.index.year, values='費用').reset_index(level=1)
21
22ret = ret.rename(columns={2019:'前年費用', 2020:'費用'})
23ret['前年比'] = ret['費用'] / ret['前年費用'] * 100
24print(ret)
25#日付 キャンペーン 前年費用 費用 前年比
26#01/01 testA 500 1000 200.0
27#01/01 testB 1000 2000 200.0
28#01/02 testA 500 1000 200.0
29#01/02 testB 1000 2000 200.0
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/04/13 07:16
2020/04/13 10:10
2020/04/13 10:29
2020/04/13 10:32
2020/04/13 10:33
2020/04/13 10:37