【问题标题】:look for a value from a pandas dataframe into another using an inequality condition使用不等式条件从 pandas 数据帧中查找一个值到另一个数据帧中
【发布时间】:2019-06-21 18:43:32
【问题描述】:

我有两个 pd.Dataframes:

A = [ timestamp      key 
      12-12-2012:00  AAAA
      13-12-2012:00  AAAA
    ...]

还有第二个:

B = [ timestamp      key 
      12-12-2015:00  AAAA
      13-12-2012:00  BBBB
      ...]

我想搜索A 中的每一行是否在B 中有一行(使用相同的键),日期在(B.timestamp - pd.timedelta(x), B.timestamp) 中。在SQL 中,您可以使用以下方法创建left join

ON (A.key = B.key) AND (A.timestamp >= B.timestamp - pd.timedelta(x)) AND (A.timestamp <= B.timestamp)

有没有办法在pandas 中获得相同的结果?

pd。到目前为止,我的解决方案是复制/附加 B 数据帧 n 次,直到B.timestamp - pd.timedelta(x) 的每个日期。考虑所有A.timestamp,然后应用pd.merge,但它必须是一种更“pythonic”的方式来获得结果

【问题讨论】:

  • 一个日期范围,例如AAAAdateA 我需要在B 中搜索,如果AAAA 键出现在datedate 之间date+somedays

标签: python pandas dataframe merge


【解决方案1】:

您可以使用 where,我使用的是一个简单的示例,您可以将其复制到您的数据中:

import pandas as pd
a=pd.DataFrame(columns=["A","B"])
a["A"]=[1,2,3]
a["B"]=[11,22,33]

print(a.where((a.A > 1) & (a.A <=3)).dropna())

输出将是:

    A   B
1   2.0 22.0
2   3.0 33.0

注意:上述代码中1或3的位置可以使用任意值

【讨论】:

  • 但我需要“时间戳”在一个范围内,而不仅仅是在一个相等范围内。
猜你喜欢
  • 2022-01-20
  • 2017-11-16
  • 2018-01-10
  • 2021-08-28
  • 2022-01-24
  • 2017-11-18
  • 1970-01-01
  • 2017-04-20
  • 1970-01-01
相关资源
最近更新 更多