好的,我有第一个数据帧df1:

|timestamp                |ip         |
|2022-01-06 11:58:53+00:00|1.1.1.5.   |
|2022-01-08 03:56:35+00:00|10.10.10.24|
|2022-01-09 22:29:30+00:00|3.3.3.89.  |
|2022-03-08 22:37:52+00:00|8.8.8.88.  |

以及第二个数据帧df2:

|timestamp                |other|
|2022-01-07 22:08:59+00:00|other|
|2022-01-07 23:08:59+00:00|other|
|2022-01-09 17:04:09+00:00|other|
|2022-03-05 17:04:09+00:00|other|

我想根据df1中的两个连续时间戳来计算df2中有多少行,这意味着:

|timestamp                |ip         |count|
|2022-01-06 11:58:53+00:00|1.1.1.5    |NaN  |
|2022-01-08 03:56:35+00:00|10.10.10.24|2    |
|2022-01-09 22:29:30+00:00|3.3.3.89   |1    |
|2022-03-08 22:37:52+00:00|8.8.8.88   |1    |

我try 的是首先在df1中创建另一列,并使用之前的时间戳:

df1 = df1.assign(timestamp_b4=df1.timestamp.shift(1)).fillna({'timestamp_b4': df1.timestamp})

这给了我:

|timestamp                |ip         |timestamp_b4             |
|2022-01-06 11:58:53+00:00|1.1.1.5    |2022-03-08 22:37:52+00:00|
|2022-01-08 03:56:35+00:00|10.10.10.24|2022-01-06 11:58:53+00:00|
|2022-01-09 22:29:30+00:00|3.3.3.89   |2022-01-08 03:56:35+00:00|
|2022-03-08 22:37:52+00:00|8.8.8.88   |2022-01-09 22:29:30+00:00|

然后做一些

s = (df2[df2['timestamp'].between(df1['timestamp'], df1['timestamp_b4'])].size())

但不幸的是,由于大Pandas 需要比较标记相同的物体,所以它不起作用.

有没有一个好的Pandas /Python 的方法可以做到这一点?

谢谢

推荐答案

好了,最后,我做了些什么.我使用了@Drakax答案.

我用以前的时间戳创建了一列

df1 = df1.assign(previous_deconnection=df1.timestamp.shift(1)).fillna({'previous_deconnection': df1.timestamp})

然后我设置第一行的值,

df1['previous_deconnection'].iloc[0]=pd.to_datetime('2022-01-01 00:00:00+00:00')

然后我将此函数应用于df1的每一行

def time_compare(a,b):  
  return len(b[((b['timestamp'] >= a['previous_deconnection']) & (b['timestamp'] <= a['timestamp']))])

df1['Count'] = df1.apply(lambda row: time_compare(row, df2), axis=1)

Python相关问答推荐

对某些列的总数进行民意调查,但不单独列出每列

如何使用matplotlib在Python中使用规范化数据和原始t测试值创建组合热图?

什么相当于pytorch中的numpy累积ufunc

无法定位元素错误404

Godot:需要碰撞的对象的AdditionerBody2D或Area2D以及queue_free?

如何在WSL2中更新Python到最新版本(3.12.2)?

海上重叠直方图

如何在Python中找到线性依赖mod 2

如何在Python中使用另一个数据框更改列值(列表)

使用Python查找、替换和调整PDF中的图像'

为什么常规操作不以其就地对应操作为基础?

ruamel.yaml dump:如何阻止map标量值被移动到一个新的缩进行?

循环浏览每个客户记录,以获取他们来自的第一个/最后一个渠道

Discord.py -

Polars Group by描述扩展

如何根据rame中的列值分别分组值

python的文件. truncate()意外地没有截断'

搜索结果未显示.我的URL选项卡显示:http://127.0.0.1:8000/search?";,而不是这个:";http://127.0.0.1:8000/search?q=name";

如何在开始迭代自定义迭代器类时重置索引属性?

判断字典中是否有多个值对