前提
データフレーム内の条件で指定した2つのセルの合計値を出したいです。
以下表のような計算を、pandasで行いたいです。
列番号 | A | B | C | 計算結果 |
---|---|---|---|---|
1 | 0 | 0 | 0 | 0 |
2 | 1 | 2 | 3 | 1 |
3 | 2 | 3 | 4 | 5 |
4 | 5 | 6 | 7 | 9 |
列1の計算結果はA1
列2の計算結果はA2+C1
列3の計算結果はA3+C2
列4の計算結果はA4+C3
というようなイメージです。
なぜこれを実現しないといけないのか
なぜこのようなことを実現したいのかというと、
現在売上高を集計し、Matplotlibで描画をすることを想定した、
以下の条件のあるデータフレームを作成しているためです。
列1 | date | 当日売上 | 仮売上高合計 | 確定売上高合計 |
---|---|---|---|---|
1 | 2022/7/1 | 100 | 100 | 100 |
2 | 2022/7/2 | 100 | 200 | 200 |
3 | 2022/7/3 | 200 | 400 | 400 |
4 | 2022/7/4 | 200 | 600 | 650 |
5 | 2022/7/5 | 0 | 600 | 650 |
6 | 2022/7/6 | 300 | 900 | 950 |
7 | 2022/7/7 | 100 | 1000 | 1250 |
8 | 2022/7/8 | 0 | 1000 | 1250 |
列「当日売上」というのは、各担当から申告があった数値を反映しており、
列「仮売上高合計」はその当日売上をcumsumで集計しています。
ランダムな日にちで、確定した売上高合計の情報が入手できるため、
それまでの集計を無視して、「確定売上高合計」に正しい数値が入ります。
その後、毎日の売上を、「確定売上高合計」の前日に足した情報を準備する必要があります。
色々ツッコみたい気持ちもありますが、これを実現するために、
エクセルのようにセル指定して計算する、C1+A2みたいなことをデータフレーム内で実現したいのです。。。
検討していること
df.shift(period=1)で式を組んで列を追加して、加算計算を組めばいいか?と考えているのですが、
他にスマートな書き方があればと思い、ご相談させていただきました。
以下にテーブルデータを添付しますので、ご利用ください。
python
s = """ 列1,date当日売上,仮売上高合計,確定売上高合計 1,2022/7/1,100,100,100 2,2022/7/2,100,200,200 3,2022/7/3,200,400,400 4,2022/7/4,200,600,650 5,2022/7/5,0,600,650 6,2022/7/6,300,900,950 7,2022/7/7,100,1000,1250 8,2022/7/8,0,1000,1250 """df = pd.read_csv(StringIO(s), dtype={'trade_date':str})
お忙しいところ恐れ入りますが、ご知見のある方、ご協力いただければ幸いです。
よろしくお願い致します。
0 コメント