2016-03-24 15 views
1

これは私の質問です。Pandasを使用して同じクラスの2つの行を結合します

## data for example 
    Name type  Value1  Value2  Value3   Value4    
    A  unemp 1.733275e+09 2.067889e+09 3.279421e+09 3.223396e+09 
    B  unemp 1.413758e+09 2.004171e+09 2.383106e+09 2.540857e+09 
    C  unemp 1.287548e+09 1.462072e+09 2.831217e+09 3.528558e+09 
    A  unemp 2.651480e+09 2.846055e+09 5.882084e+09 5.247459e+09 
    D  unemp 2.257016e+09 4.121532e+09 4.961291e+09 5.330930e+09 
    C  unemp 7.156784e+08 1.182770e+09 1.704251e+09 2.587171e+09 
    E  emp 6.e+09 9.692455e+09 2.288822e+10 3.215460e+10 
    F  emp 5.647393e+09 9.597211e+09 2.121828e+10 3.107219e+10 
    G  emp 4.617047e+09 8.030113e+09 2.005203e+10 2.755665e+10 

私の目標:「名前」列を比較し、同じ「名前」で行を兼ね備えています。

以下のコードを使用する:

f_test = pd.read_clipboard() 
f_test.groupby('Name').sum().reset_index() 

enter image description here

結果は次のように示しています。 しかし、 "タイプ"の列を保持する方法は?誰かの助言を願います!

+0

ここでの問題は、それがこの列に集約しても意味がありませんので、 'type'がが数値列ではないということですそれが落とされた理由は、型の列を戻さなければならないということです – EdChum

答えて

2

あなたは、元のデータフレームの列のサブセットで結果をmergeことができます。

>>> pd.merge(
    f_test.groupby('Name').sum().reset_index(), 
    f_test[['Name', 'type']].drop_duplicates(), 
    how='right') 

    Name Value1 Value2 Value3 Value4 type 
0 A 4.384755e+09 4.913944e+09 9.161505e+09 8.470855e+09 unemp 
1 B 1.413758e+09 2.004171e+09 2.383106e+09 2.540857e+09 unemp 
2 C 2.003226e+09 2.644842e+09 4.535468e+09 6.115729e+09 unemp 
3 D 2.257016e+09 4.121532e+09 4.961291e+09 5.330930e+09 unemp 
4 E 6.e+09 9.692455e+09 2.288822e+10 3.215460e+10 emp 
5 F 5.647393e+09 9.597211e+09 2.121828e+10 3.107219e+10 emp 
6 G 4.617047e+09 8.030113e+09 2.005203e+10 2.755665e+10 emp 
関連する問題