2017-11-10 7 views
1

私は同じグループに属するいくつかの行を持つ1つのデータフレームを持っています。私は今、古いデータの各列の中央値を使って、新しいデータフレームにグループごとに1行を追加します。したがって、私は以下をコード化しました:DFのすべての行に行き、グループ名がすでに処理されていれば検索します。私は新しいDFに中央値を書きたくない場合は `Python:あるフレームから別のフレームへパンダの値を書き込むことができません

for i in df2.index: 
    prot=str(df2.loc[i, 'Proteins']) 


    if prot in c: 
     pass 

    else: 

     c.append(prot) 
     temp=df2[df2['Proteins'].apply(lambda x: x == prot)] 
     df3.loc[i, 'Gene Names']=temp.loc[i, 'Gene Names'] 
     df3.loc[i, 'Proteins']=temp.loc[i, 'Proteins'] 
     df3.loc[i, 'Median 0']=temp['H/L 0'].median() 
     df3.loc[i, 'Median 1']=temp['H/L 1'].median() 
     df3.loc[i, 'Median 2']=temp['H/L 2'].median() 
     df3.loc[i, 'Median 3']=temp['H/L 3'].median() 
     df3.loc[i, 'Median 4']=temp['H/L 4'].median() 
     df3.loc[i, 'Median 5']=temp['H/L 5'].median() 
     df3.loc[i, 'Median 6']=temp['H/L 6'].median() 
     df3.loc[i, 'Median 7']=temp['H/L 7'].median() 
     df3.loc[i, 'Median 8']=temp['H/L 8'].median() 
     df3.loc[i, 'Median 9']=temp['H/L 9'].median() ` 

データフレームは次のようになります。

 
    A B C D 
    XX 2 2 2 
    Y 4 4 4 
    YX 2 2 2 
    XX 2 3 2 

それが新しいデータフレームに崩壊する必要があります。

 
    A B C D 
    XX 2 2.5 2 
    Y 4 4 4 
    YX 2 2 2 

しかし、もし私がこれを行うと、それは私のエラーを提起します:

KeyError: 'the label [2311] is not in the [index]' 

私はそれを割り当ててインデックスを作成すると思ったdf3.loc[i, 'column']=XXX ありがとうございました。

答えて

4

groupbyを達成しようとしていますか?あなたの答えのための

df.groupby('A').median() 
 
    B C D 
A     
XX 2.0 2.5 2.0 
Y 4.0 4.0 4.0 
YX 2.0 2.0 2.0 
+0

感謝。数値以外の値を持つ列がさらにある場合、これは機能しますか?ときどき私は、列を指定せず、数値でない列がある場合、.median()が機能しないという問題があります。 –

+0

はい数値以外の値は無視されます。データをグループ化する列を指定する必要があります。 – Dark

+0

どうもありがとうございます。それは今うまく動作します:) –

関連する問題