将求和列作为行附加到dataframe,over for循环

2024-09-25 00:32:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数据帧:

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

还有我所有的tripid列表。目前,我正在尝试创建一个For循环,在其中为每个TripID创建一个临时数据帧,对其执行计算,然后将输出附加到一个新的数据帧。temp数据帧示例如下:

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'值。我不想它有任何重复的身份证。然而,我不能concate我的temp2变量,因为它转换成一个系列,而不是一个数据帧

如果你需要澄清,请告诉我


Tags: 数据代码id示例df列表foroutput
1条回答
网友
1楼 · 发布于 2024-09-25 00:32:06

而不是我以前使用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])

相关问题 更多 >