将求和的列作为行追加到数据帧,通过for循环

时间:2017-02-06 13:38:52

标签: python python-3.x pandas numpy

我有一个数据框:

TripID, x, y
adasd,  2, 3
adasd,  3, 2
adasd,  -1, 3
fgrgr,  4, 1
ect...

以及我所有TripID的列表。目前我要做的是创建一个For循环,在其中我为每个TripID创建一个临时数据帧,对其执行计算,然后将输出附加到新的数据帧。示例临时数据帧是:

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

我希望将以下行添加到输出数据框中:

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])

我想要的输出是一个包含两列的数据框,一列用于tripID,另一列用于我的' a'值。我不希望它有任何重复的ID。但是,我无法将我的temp2变量连接成一个系列而不是数据帧。

如果您需要澄清,请告诉我。

1 个答案:

答案 0 :(得分: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])