首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Pandas -如果匹配条件和其他列中定义的时间范围,则将值赋值给行

Pandas -如果匹配条件和其他列中定义的时间范围,则将值赋值给行
EN

Stack Overflow用户
提问于 2020-01-08 00:07:12
回答 1查看 58关注 0票数 0

我有一个看起来很简单的问题,但是我还没能在这个平台上找到答案。我在不同的日子用不同的设备做过gps跟踪实验。

我现在有两个数据帧。第一个数据帧包含带有gpsnumber、时间戳、经度和纬度的gps点。第二个数据帧包含我们在分发时和gpstracker中记录的有关实验的信息。这里有实验号、使用的gps-number、hand_out_time和hand_in_time列。

我有两个目标:(1)我想要将gps数据与正确的实验相匹配,(2)我想删除所有不在实验时间内的行。

这看起来像这样:

代码语言:javascript
复制
df:
    GPS_number  date_time           lon         lat     
744 16          2019-12-12 10:58:41 4.913158    52.367210   
745 16          2019-12-12 11:10:05 4.913158    52.367210   
746 16          2019-12-12 11:10:56 4.913085    52.367130   
747 16          2019-12-12 11:29:31 4.913085    52.367130   
748 16          2019-12-12 11:29:36 4.913191    52.367092   
代码语言:javascript
复制
df2:
    Measurement GPS_number  Visitor_type    Hand_out_time       Hand_in_time
0   1           3           Tourist         2019-12-12 11:35:00 2019-12-12 12:16:00
1   2           3           Tourist         2019-12-12 12:47:00 2019-12-12 14:34:00
2   3           5           Member          2019-12-12 11:10:00 2019-12-12 13:36:00
3   4           6           Member          2019-12-12 11:27:00 2019-12-12 12:55:00
4   5           6           Tourist         2019-12-12 12:54:00 2019-12-12 15:22:00

我试着使用口罩,但这不起作用,因为我猜它不能正确地匹配出手时间和上手时间。

代码语言:javascript
复制
mask = (df['GPS_number'] = (df2['GPS_number'] & (df['date_time'] > df2['Hand_out_time'] & (df['date_time'] < df2['Hand_in_time)
df = df[mask] 

如果有人能教我怎么做就太好了。谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-01-08 00:30:02

一些类似的东西可能会起作用,更多的是一个想法,而不是为你的df提供全功能代码的承诺。

代码语言:javascript
复制
df = df.merge(
    df[['Measurement','GPS_number','Visitor_type','Hand_out_time','Hand_in_time']],
    left_on = 'GPS_number',
    right_on = 'GPS_number',
    how = 'left'
    )

mask = ((df['date_time'] > df['Hand_out_time']) & (df['date_time']<df['Hand_in_time']))
df = df[mask]

我不相信mask能像你最初拥有的那样在多个df中工作。在我看来,您要做的事情就像是具有多个on条件的SQL left join的Python等价物。这里的思想是合并一个简单的匹配,这将产生一个具有多个重复条目的非常笨重的数据集。然后,将掩码应用于重新定义的df将有点像添加额外的on条件,并且有望得到您想要的结果。

另一个潜在的错误可能是列之间的数据类型不一致。

如果以上不能完成工作,评论错误信息或不正确的结果,我会尝试相应的编辑。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59632003

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档