我有以下 df

       id             xx            yy  time
0       1  553343.041098  4.178420e+06     1
1       1  553343.069815  4.178415e+06     2
2       1  553343.069815  4.178415e+06     3
3       2  553343.950755  4.178415e+06     1
4       2  553341.343829  4.178410e+06     6
xxyy 是每个 idtime 中某个点的位置。

我想在这个 df 中创建一个额外的列,这将是从一个时间点到另一个时间点的距离差异(从 time 的最小值到下一个更大的,到下一个更大的等等),在 id 中团体。

有这样做的 Pythonic 方式吗?

最佳答案

你可以像下面这样做。

我没有做 df['distance_meters'] 因为它很简单。

df['xx_diff']=df.groupby('id')['xx'].diff()**2
df['yy_diff']=df.groupby('id')['yy'].diff()**2

如果您的数据框中不需要 ['xx_diff'] & ['yy_diff'] 列,则可以直接使用下面的代码。
df['distance']= np.sqrt(df.groupby('id')['xx'].diff()**2+df.groupby('id')['yy'].diff()**2)

输出
    id            xx         yy time    xx_diff3    yy_diff3    distance
0   1   553343.041098   4178420.0   1   NaN            NaN      NaN
1   1   553343.069815   4178415.0   2   0.000825       25.0     5.000082
2   1   553343.069815   4178415.0   3   0.000000       0.0      0.000000
3   2   553343.950755   4178415.0   1   NaN            NaN      NaN
4   2   553341.343829   4178410.0   6   6.796063      25.0      5.638800

关于python - 如何计算python中组内两点之间的距离,对于许多后续点,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/60224494/

10-13 06:59