2017-01-20 1 views
1

このデータフレームをグループ化してprice_1とprice_2が同じ行になるようにしたいのですが、次にreset_indexグループ化されたオブジェクトを作成し、新しいデータフレームを作成して価格1を価格2に追加します。groupbyを使用して、そのgroupbyオブジェクトに計算を必ずしも適用せずに新しいデータフレームを作成する

私の考えでは、sqlのように、サブクエリを使用してgroupbyを適用してから計算を実行します。

pythonでは、groupbysは複数のグループを作成し、それらをまとめて作成する方法で動作しますが、大きなデータフレームをitem_number、prod_name、およびcompを共有する場所に減らすことを検討しています。その新しいデータフレームを使用して、いくつかの計算を実行します。

これを見るもう1つの方法は、グループ内でそれらの列を一緒に追加し、合計である新しい列を作成し、何らかの形でそれを戻し合わせることです。

d = { 
'item_number':[1234,56789,2468,1234,56789,2468], 
'prod_name':['prod_a','prod_b','prod_c','prod_a','prod_b','prod_c'], 
'comp':['comp_a','comp_b','comp_c','comp_a','comp_b','comp_c'], 
'price_1':[20.00,16.69,36.21,0,0,0], 
'price_2':[0,0,0,5,7,3.69]} 

df = pd.DataFrame(data=d) 

所望の出力:

d = { 
'item_number':[1234,56789,2468], 
'prod_name':['prod_a','prod_b','prod_c'], 
'comp':['comp_a','comp_b','comp_c'], 
'price_1':[20.00,16.69,36.21,0,0,0], 
'price_2':[5,7,3.69]} 

df = pd.DataFrame(data=d) 
+0

はあなたの試みと所望の出力を追加してください。あなたの説明は私にとって非常に曖昧です。 – Psidom

+0

@Psidomこれが役立つことを願っています!文字通り単にgroupbyを使用して共通の値を持つ行を1つの行にマージしようとすると、price_1とprice_2が隣り合わせになるので、df ['total'] = df ['price_1'] + df ['price_2' '] –

答えて

1

私が正しくあなたを理解していれば、これはあなたが探しているものかもしれ:

print(df.groupby(['item_number', 'comp'])['price_1', 'price_2'].sum()) 

出力:

     price_1 price_2 
item_number comp      
1234  comp_a 20.00  5.00 
2468  comp_c 36.21  3.69 
56789  comp_b 16.69  7.00 

これを新しいデータフレームにしたい場合は、価格の列の値を合計dは、あなたがこれを行うことができます。

new_df = df.groupby(['item_number', 'comp'])['price_1', 'price_2'].sum() 
new_df['total'] = new_df.price_1 + new_df.price_2 
print(new_df) 

出力を:

     price_1 price_2 total 
item_number comp       
1234  comp_a 20.00  5.00 25.00 
2468  comp_c 36.21  3.69 39.90 
56789  comp_b 16.69  7.00 23.69 
+0

ああ、もしあなたが1つの値だけを合計すると、その値を返しますか?私も.max()や何でも好きなことをすることができます –

+0

@ YaleNewman私は編集を行いました。これはあなたが探しているものですか? –

+0

はい、私はgroupby以外のリストを使用すると、列のリストではなく、それらのシリーズをまとめて合計して個別に合計するように強制するという印象を受けました。すなわち、私はg.applyを試しました。(lambda x:x ['price_1'] + x ['price_2'])reset_index()私はちょっと意味が分かりません –

関連する問題