2016-11-30 3 views
0

の値に合計列WRTを、私はこのようになりますデータがあります - 私はデータフレームに変換パンダデータフレーム - 別の列

data = {"doc1" : {'a': 2 , 'b': 1,'c':3}, "doc2" : {'a': 1 , 'b': 1,'c':3}, "doc3" : {'a': 1 , 'b': 1,'c':3}} 

を: -

df = pd.DataFrame.from_dict(data,orient='index') 

DATAFRAMEがどのように見えますこの: -

a c b doc1 2 3 1 doc2 1 3 1 doc3 1 3 1

今、私は列の体重のすべての値を合計しますここで、列の値は、だから私はしたい値は2

むしろ列の両方を反復処理するよりも、これを行う簡単な方法はありますでしょう1.

のですか? 他の投稿を確認したところ、thisが見つかりました: -

これは.loc関数を使用しています。 df.loc[df['a'] == 1, 'b'].sum()

何らかの理由で私のデータフレームで動作させることができないようです。

お知らせください。

ありがとうございました。

+2

"何らかの理由で、私は自分のデータフレームで動作させることができません。" 「何らかの理由」の詳細な説明を教えてください。あなたが見つけた答えはうまくいくはずです。 – nanoix9

+0

ねえ、私は以下の答えで動作するようにしました。しかし、私のコードも同じことをしていました。私は変数を台無しにするだけです。そのため、失敗していました。ありがとう、トン! – skyfail

答えて

1

あなたは非常に近いです。下記参照。

>>> df[df['a'] == 1]['b'].sum() 
2 

代わりの.locを使用して、ちょうどカラム'b'を選択し、次に加算次いで、(df[df['a'] == 1])最初のデータフレームをフィルタリングしてみてください。

編集:使用しているパンダのバージョンによっては、(感謝、@maxymoo)になるはずですが、今後の参考にしておきます。私は0.18.1を実行しています。

+1

実際にはこれはOPのコードと同等であるはずです...多分それはパンダの最新バージョンでしかないでしょうか? – maxymoo

+0

Hmmm。あなたが正しい。私は 'pandas 0.18.1'を実行していますが、彼の解決策は依然として有効です。 – blacksite

+0

お返事ありがとうございました。私はコードを試して、それは正常に動作しますが、私のデータフレームは10kの列と2k行以上でかなり巨大です。私は何回も合計を計算する必要があります。上記のコードを使用すると、時間がかかりました。これを行うより速い方法? – skyfail

関連する問題