前提・実現したいこと
以下のソースコードにて、df2で果物の種類ごとに集計した値をdfの値に足し算したいのですが、
dfの値が更新されません。エラーメッセージはなくプログラム自体は回るのですが、値を反映させるにはどのように集計したらよいのでしょうか。
○作業の具体例
kind = appleの場合
1.df2のnumberでappleの文を足し算(10+12=22)
2.この値をdf1のappleの行のnumberに足し算する
該当のソースコード
python
1 2import pandas as pd 3import numpy as np 4 5 6df = pd.DataFrame({"number": np.arange(10), 7"kind":["apple", "banana", "apple", "apple","apple", "banana", "apple", "apple","sour", "sour"]}) 8 9# number kind 10#0 0 apple 11#1 1 banana 12#2 2 apple 13#3 3 apple 14#4 4 apple 15#5 5 banana 16#6 6 apple 17#7 7 apple 18#8 8 sour 19#9 9 sour 20 21 22df2 = pd.DataFrame({"number": [10,12, 200, 50], 23"kind":["apple", "apple", "banana", "sour"], 24"date":["JAN","FEB","MAR","MAR"]}) 25 26# number kind date 27#0 10 apple JAN 28#1 12 apple FEB 29#2 200 banana MAR 30#3 50 sour MAR 31 32 33#df2の果物の種類に対応するnumberをdf1の同じ果物のnumbeに足し算したい 34kind_list = ["apple","banana","sour"] 35for fruit in kind_list: 36 df.query("kind==@fruit").loc[:, "number"] += df2.query("kind==@fruit").sum()["number"] 37 print(df.query("kind==@fruit").loc[:, "number"]) 38 print(df2.query("kind==@fruit").sum()["number"]) 39 40#なぜかdfが更新されない... 41print(df) 42# number kind 43#0 0 apple 44#1 1 banana 45#2 2 apple 46#3 3 apple 47#4 4 apple 48#5 5 banana 49#6 6 apple 50#7 7 apple 51#8 8 sour 52#9 9 sour
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/01/23 04:57