DataFrame.apply()
で呼び出す関数にて pd.date_range()
で生成したIndexを用いたSeriesデータを返すことで実現できます。
Python
1import pandas as pd
2
3df = pd.DataFrame({'商品':['A','B','C'],
4 '販売開始時期':['2019/12','2018/3','2019/7'],
5 '販売終了時期':['2020/2','2019/7','2020/6'],
6 '月当たり平均売上高':[1000,2000,3000]})
7
8ret = df.set_index('商品', drop=True).apply(lambda d:pd.Series(d['月当たり平均売上高'], index=pd.date_range(start=d['販売開始時期'], end=d['販売終了時期'], freq='MS')), axis=1).fillna(0)
9
10print(ret)
11# 2018-03-01 2018-04-01 2018-05-01 2018-06-01 2018-07-01 2018-08-01 ... 2020-01-01 2020-02-01 2020-03-01 2020-04-01 2020-05-01 2020-06-01
12#商品 ...
13#A 0.0 0.0 0.0 0.0 0.0 0.0 ... 1000.0 1000.0 0.0 0.0 0.0 0.0
14#B 2000.0 2000.0 2000.0 2000.0 2000.0 2000.0 ... 0.0 0.0 0.0 0.0 0.0 0.0
15#C 0.0 0.0 0.0 0.0 0.0 0.0 ... 3000.0 3000.0 3000.0 3000.0 3000.0 3000.0
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。