それはあなたが何をしたいかのように聞こえるが、各要素間の関連を見つけることです。 2つ(またはそれ以上)の注文に「キャンディー」が含まれている場合、それぞれの商品の数は含まれています。
これは私が思いつくことができる最高です。まず、各製品ごとにグループ化し、その製品を持つすべての注文を検索します。次に、そのサブセットを元のデータフレームから取り出し、各製品の数量の合計を取得します。
# group by the products
products = df.groupby("Product")
# each groupby element is a tuple
# the first entry is the value (in this case, the Product)
# the second is a dataframe
# iterate through each of these groups
for p in products:
sub_select = df[df["OrderNum"].isin(p[1]['OrderNum'])]
quantities = sub_select.groupby("Product").Quantity.sum()
# print the name of the product that we grouped by
# and convert the sums to a dictionary for easier reading
print(p[0], quantities.to_dict())
# Candy : {'Candy': 4, 'Gum': 2}
# Chocolate : {'Chocolate': 10}
# Gum : {'Candy': 4, 'Soda': 3, 'Gum': 7}
# Soda : {'Soda': 3, 'Gum': 5}
sub_select
は、元のデータフレームのサブセットになります。たとえば、Candyを持つすべてのオーダーのすべての行が含まれます。 quantities
これらの注文のすべてを製品別にグループ化して、一致するすべての注文の各製品の数量の合計を取得します。
私はあなたの予想される出力に混乱しています。キャンディー4、ガム2はどうやって手に入りましたか? 1行目と最後の行は私にとって意味があります(これは、商品によってグループ化された数量の合計です)。しかし、2番目のパターンはそのパターンと一致しません。 – TheF1rstPancake
注文番号1のキャンディは4回、注文番号1のガムは2回注文されました。キャンディーはどこにも注文されていないので、キャンディーで注文された商品の生産量はキャンディー4とガム2です。 – connor
私は今それを得ると思います。ガムのある3つの注文がありました。それらの注文のうち、7セットのガムが(3つの異なるオーダーで)合計で注文され、キャンディの4つとソーダの3つのものが注文された。 – TheF1rstPancake