2017-12-21 17 views
2

だから私は5列と100000行のようなこのパンダのDataFrameを持っています。 V1、V2、V3およびV5の値が正確に同じである場合1つの列がすべて同じである1つのpandas DataFrameで観測をマージするにはどうすればよいですか?

V1  V2   V3   V4 V5 
0 2014 Alfa Romeo 159   1 157 
1 2014 Alfa Romeo GIULIETTA 1 119 
2 2014 Alfa Romeo GIULIETTA 3 119 

私は何をしたいことは、列V4の値を合計することである:ここでは例です。

V1  V2   V3   V4 V5 
0 2014 Alfa Romeo 159   1 157 
1 2014 Alfa Romeo GIULIETTA 4 119 

は、最初に私はGROUPBYは、仕事をするだろうと思ったが、私は

df.groupby(['V1', V2','V3', 'V5' ]).sum() 

をしたとき、私はV3は、例えば、私は色の異なる10種類を持っている必要があり、カラム内の情報の一部を失いました今は3つしかありません。 それを解決するには?

+0

「V3列の情報が失われました」あなたは精緻化できますか? –

+0

'df.groupby(['V1'、 'V2'、 'V3'、 'V5'])V4.sum()。reset_index()。reindex(columns = df.columns)'あなたのために働く? –

+0

列V3の情報の一部が失われていますか? - cᴏʟᴅsᴘᴇᴇᴅ 確かに。 XC60 V60 V40 XC70 S60 S80 V70 V40クロスカントリー13 XC90 10 V60 HYBRID 1 と私はDFを行った後:私のデータベースでは、私は、ボルボ(V3列)のための10種類のように持っています。 groupby(['V1'、 'V2'、 'V3'、 'V5'])。agg(["sum"]) V70、XC60、XC70、XC90のみが表示されます。 パンダのバグですか?どう思いますか? – MikolajM

答えて

3

私はあなたが 'V1'、 'V2'、 'V3'または 'V5'列に欠けているデータを扱っていると思われ、このデータはgroupbyのものから省略されています。

df.fillna("Missing").groupby(['V1','V2','V3','V5']).V4.sum() 

例:

印刷 'ブラック' を紛失(DF)

 V1   V2   V3 V4 V5 
0 2014.0 Alfa Romeo  159 1 157 
1 2014.0 Alfa Romeo GIULIETTA 1 119 
2 2014.0 Alfa Romeo GIULIETTA 3 119 
3  NaN Alfa Romeo  Black 4 119 

df.groupby(['V1','V2','V3','V5']).V4.sum() 

V1  V2   V3   V5 
2014.0 Alfa Romeo 159  157 1 
        GIULIETTA 119 4 
Name: V4, dtype: int64 
この SO Post

回避策を参照してくださいfillna()を使用することです

fillnの使用a():

df.fillna("Missing").groupby(['V1','V2','V3','V5']).V4.sum() 

V1  V2   V3   V5 
2014.0 Alfa Romeo 159  157 1 
        GIULIETTA 119 4 
Missing Alfa Romeo Black  119 4 
Name: V4, dtype: int64 
関連する問題