将序列索引中的值添加到DataFram中相等值的行

2024-09-25 00:27:21 发布

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

在向Pandas数据帧中添加一个新列时,我面临着一个问题:我有一个数据帧,其中每一行表示一个位置数据记录和一个时间戳。这些记录属于trips,因此每一行还包含一个trip id

   TripID  Lat    Lon    time
0  42      53.55  9.99   74
1  42      53.58  9.99   78
3  42      53.60  9.98   79
6  12      52.01  10.04  64
7  12      52.34  10.05  69

现在,我想删除所有旅行的记录,这些旅行的记录少于它们的最小数量。我想我可以简单地得到每次旅行的记录数,比如:

 lengths = df['TripID'].value_counts()

然后,我的想法是向数据帧添加一个额外的列,并用与每条记录的trip id对应的序列中的值填充它。然后我就可以去掉length列值太小的所有行。你知道吗

但是,我似乎找不到将长度值放入正确行的方法。有没有人对此有想法,甚至有更好的方法来解决整个问题?你知道吗

非常感谢!你知道吗

编辑:

我想要的输出应该是这样的:

   TripID  Lat    Lon    time  length
0  42      53.55  9.99   74    3
1  42      53.58  9.99   78    3
3  42      53.60  9.98   79    3
6  12      52.01  10.04  64    2
7  12      52.34  10.05  69    2

Tags: 数据方法idpandas数量time记录时间
1条回答
网友
1楼 · 发布于 2024-09-25 00:27:21

我设法找到了一个比我原来的方法更好的答案:

df = df.groupby('TripID').filter(lambda x: len(x) > 2)

这可以在Pandas documentation中找到。它去除了所有包含2个或更少元素的组,或者在我的例子中是2个记录或更短的trip。你知道吗

我希望这也能帮助其他人。你知道吗

相关问题 更多 >