2017-02-06 11 views
0

のために、データフレームの行として列を合算しました。現在私がやろうとしているのは、各TripIDの一時的なデータフレームを作成し、その計算を実行し、新しいデータフレームに出力を追加するForループを作成することです。追加は、私がデータフレームを持っている以上のループ

TripID, x, y, z, a 
adasd, 2, 3, 3, 1.019460 
adasd, 3, 2, -1, 1.319678 
adasd, -1, 3, N/A, N/A 

及びIは、出力データフレームに次の行を追加したい:例えば、一時データフレームである

adasd, 2.339138 

私のコードは次のとおり

for ID in tripList: 
    temp = df.loc[df['TripID'] == ID] 
    temp['z'] = temp['x'].shift(periods=-1) 
    temp['a'] = np.vectorize(myfunction)(temp['x'],temp['y'],temp['z']) 
    temp2 = temp.groupby('TripID')['a'].sum() 
    temp2 = temp2.reset_index() 
    output = pd.concat([output,temp2]) 

マイ所望の出力であります2つの列、1つはtripID、もう1つは 'a'値のデータフレームです。私は繰り返しIDを持たせたくありません。しかし、私はtemp2変数をデータフレームではなくシリーズに変換するので、その変数を連結することはできません。

説明が必要な場合はお知らせください。

+0

を希望しますが、 'Distance'列といくつかのサンプル' myfunction'を追加することができます出力? – jezrael

+0

また、列 'z'もありません。 – jezrael

+0

申し訳ありませんが、コードをコピーして貼り付けたときから残っていました。距離の列は私の質問で修正した 'a'でなければなりません。 –

答えて

0

代わりのGROUPBYを使用して、私の以前のバージョン:

temp2 = temp.groupby('TripID')['a'].sum() 
temp2 = temp2.reset_index() 
output = pd.concat([output,temp2]) 

私の代わりにコードで新しいデータフレーム作成:

Suma = temp['a'].sum() 
trpId = temp['TripID'].iloc[0] 
temp2 = pd.DataFrame([[trpId,Suma]],columns=['TripID','a']) 
output = pd.concat([output,temp2]) 
関連する問題