通过应用返回元组的函数来创建数据帧

2024-04-26 07:05:57 发布

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

我有一个具有以下功能的数据集:

[coord_x, coord_y, coord_z, xdot, ydot, zdot]

    epoch                   sat_id  x               y               z               Vx          Vy          Vz
0   2014-01-01 00:00:00.000 0   -8855.823863    13117.780146    -20728.353233   -0.908303   -3.808436   -2.022083
1   2014-01-01 00:46:43.000 0   -10567.672384   1619.746066 -24451.813271   -0.302590   -4.272617   -0.612796
2   2014-01-01 01:33:26.001 0   -10578.684043   -10180.467460   -24238.280949   0.277435    -4.047522   0.723155
3   2014-01-01 02:20:09.001 0   -9148.251857    -20651.437460   -20720.381279   0.715600    -3.373762   1.722115
4   2014-01-01 03:06:52.002 0   -6719.092336    -28929.061629   -14938.907967   0.992507    -2.519732   2.344703

我定义了一个函数,它获取这些坐标并返回元组,如下所示:

(a, e, i, w, Om, theta) = cart2kep(coord_x, coord_y, coord_z, xdot, ydot, zdot)

我想在初始数据帧中添加a、e、I、w、Om、θ作为额外功能: 我怎样才能有效地做到这一点? 目前,我的做法如下:

out = df.apply(lambda x: cart2kep(x[2], x[3], x[4], x[5], x[6], x[7]), axis = 1)
out = out.apply(pd.Series, index = ['a', 'e', 'i', 'w', 'Om', 'theta'])
df = df.join(out)

执行时间太长。有没有更像Python的方法

先谢谢你


1条回答
网友
1楼 · 发布于 2024-04-26 07:05:57

更改函数,使其返回列表而不是元组。 然后,使用pd.DataFrame.apply:
result_type参数

   df[<list_of_columns>].apply(lambda row: cart2kep(*row), axis=1, result_type='expand')

相关问题 更多 >