python - 根据另一个 df 中的列计算一个 df 中的行数

标签 python pandas dataframe

好的,我有了第一个数据框 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 中的 2 个连续时间戳计算 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    |

我尝试的是首先在 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/pythonic 方法来做到这一点?

谢谢

最佳答案

def time_compare(df1,df2):
  return [np.sum((df1['timestamp'].values[i-1] < df2['timestamp'].values) & (df1['timestamp'].values[i] > df2['timestamp'].values)) for i in range(len(df1.timestamp))]

df2.join(pd.Series(time_compare(df1,df2), name='Count'))

很奇怪,我无法像往常一样发布数据帧输出:

<表类="s-表"> <头> 索引 时间戳 其他 计数 <正文> 0 2022-01-07 22:08:5900:00 其他 0 1 2022-01-07 23:08:5900:00 其他 2 2 2022-01-09 17:04:0900:00 其他 1 3 2022-03-05 17:04:0900:00 其他 1

关于python - 根据另一个 df 中的列计算一个 df 中的行数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72462947/

相关文章:

python - 我应该捕获哪些 Linux 信号来制作一个好的应用程序

python - 转换时间戳格式时出现问题

python - 使用 apply() 自定义函数创建新列时出现 Pandas 内存错误

python - 'DataFrame' 对象没有属性 'sort'

python - 当内存有问题时如何读取大型 csv 或数据库并连接列?

python - 在 Spark 中创建简单的 RDD 时出现错误

python - 使用 MLP 和 Tensorflow 预测时间序列值

python - pandas table.loc lambda函数无法根据条件对表进行切片

python - 将 Pandas DataFrame 转换为 JSON 作为更大数据结构的元素

python - 如果所有值都等于字符串值,则删除列