我有一个数据框:
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变量连接成一个系列而不是数据帧。
如果您需要澄清,请告诉我。
答案 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])