0

我有两个熊猫数据框:

第一帧包含一个时间戳(日期 + 时间)和四组纬度/经度对,它们定义了地球上一个盒子的角。

第二帧包含一个时间戳和一个标记事件的纬度/经度对。

我想知道,对于每个事件,它是否落在任何“地球上的盒子”内,如果是,哪些是时间戳之间的 delta_t。

我能想到的唯一方法是逐行遍历第二帧,并与第一帧进行比较。我希望有一种更蟒蛇的方式,但什么都没有想到。有任何想法吗?

谢谢,

上海

4

1 回答 1

0

这是一个类似的问题:Iteration through a pandas dataframe

我认为这会奏效。伪鳕鱼。您将需要 0.11-dev

两个框架都有一个日期时间索引,A 是你的第一个,B 短得多,因为它只有你的事件。

在 A 上,将索引设置为列,A['date'] = A.index

在 B 上,将索引设置为列,B['date'] = B.index

内连接 A 和 B,然后填充 B

C = A.join(B).ffill()

然后,如果包含您的事件,则需要一些布尔逻辑,例如:

C['is_included'] = (C['A_lat'] > C['B_lat']) & (C['A_long'] > C['B_long'])...etc 

因此,当 is_included 为 True 时,您需要差分时间,但与前一个事件不同

在B的原始日期列上将未选择的事件设置为nan

C['date_B'][~C['is_included']] = np.nan

再次向前填充 date_B

C['date_B'] = C['date_B'].ffill()

如果你现在从 date_A 中减去 date_B 我想你会有你的 timedelta

C['delta'] = C['date_B']-C['date_A']

然后

C[C['is_included']] is your answer, and delta is the timedelta
于 2013-04-05T16:25:51.833 回答