合并熊猫数据框,其中一个值介于两个值之间

zy

我需要在一个标识符和一个数据帧中的日期位于另一个数据帧中的两个日期之间的条件下合并两个熊猫数据帧。

数据框A具有日期(“ fdate”)和ID(“ cusip”):

在此处输入图片说明

我需要将此与此数据框B合并:

在此处输入图片说明

A.cusip==B.ncusipA.fdate之间B.namedtB.nameenddt

在SQL中,这是微不足道的,但是我看到的如何在pandas中做到这一点的唯一方法是,首先在标识符上无条件合并,然后在日期条件上进行过滤:

df = pd.merge(A, B, how='inner', left_on='cusip', right_on='ncusip')
df = df[(df['fdate']>=df['namedt']) & (df['fdate']<=df['nameenddt'])]

这真的是最好的方法吗?似乎最好是在合并中进行过滤,以免在合并后但在过滤器完成之前有一个非常大的数据帧。

努力

如您所说,这在SQL中非常容易,那么为什么不在SQL中这样做呢?

import pandas as pd
import sqlite3

#We'll use firelynx's tables:
presidents = pd.DataFrame({"name": ["Bush", "Obama", "Trump"],
                           "president_id":[43, 44, 45]})
terms = pd.DataFrame({'start_date': pd.date_range('2001-01-20', periods=5, freq='48M'),
                      'end_date': pd.date_range('2005-01-21', periods=5, freq='48M'),
                      'president_id': [43, 43, 44, 44, 45]})
war_declarations = pd.DataFrame({"date": [datetime(2001, 9, 14), datetime(2003, 3, 3)],
                                 "name": ["War in Afghanistan", "Iraq War"]})
#Make the db in memory
conn = sqlite3.connect(':memory:')
#write the tables
terms.to_sql('terms', conn, index=False)
presidents.to_sql('presidents', conn, index=False)
war_declarations.to_sql('wars', conn, index=False)

qry = '''
    select  
        start_date PresTermStart,
        end_date PresTermEnd,
        wars.date WarStart,
        presidents.name Pres
    from
        terms join wars on
        date between start_date and end_date join presidents on
        terms.president_id = presidents.president_id
    '''
df = pd.read_sql_query(qry, conn)

df:

         PresTermStart          PresTermEnd             WarStart  Pres
0  2001-01-31 00:00:00  2005-01-31 00:00:00  2001-09-14 00:00:00  Bush
1  2001-01-31 00:00:00  2005-01-31 00:00:00  2003-03-03 00:00:00  Bush

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

PySpark:合并一个值(来自第一个数据框)介于两个值(来自第二个数据框)之间的数据框

来自分类Dev

合并两个熊猫数据框,其中一个是另一个的子集(或仅填充列的子集)

来自分类Dev

合并两个熊猫数据框,其中一个日期不常见,应该在最近的日期之前合并

来自分类Dev

合并两个熊猫数据框,其中一个日期不常见,应在最近的日期之前合并

来自分类Dev

熊猫:更新其中一个列缺少数据的行的数据框值

来自分类Dev

如何使用两个熊猫数据框创建一个新数据框,其中一个数据框具有特定的行?

来自分类Dev

在R中,如何合并两个数据帧,其中一个中的列名等于另一个中的行值?

来自分类Dev

如何从“介于”两个条件之间的数据框中检索值

来自分类Dev

创建一个熊猫数据框,其中两个长度不等的向量之间存在差异

来自分类Dev

在两个给定日期之间选择熊猫数据框,其中两列的值相等

来自分类Dev

匹配两个数据帧并更改其中一个数据帧中的值

来自分类Dev

连接两个数据框并扩展其中一个的内容

来自分类Dev

比较两个数据框并创建一个报告,其中给出字段名称和旧值/新值之间存在差异的地方

来自分类Dev

更改数据框中的条目取决于它们是在两个值之间还是在一个值以下

来自分类Dev

合并两个结构相同的表,其中一个表具有优先级,并且按字段值排除

来自分类Dev

查找两个数组之间的所有值组合,其中一个数组中的值只能使用一次?

来自分类Dev

熊猫如何在数据框的两个行值之间添加其他值

来自分类Dev

如何使用lubridate软件包计算两个日期向量之间的月份数(其中一个向量具有NA值)?

来自分类Dev

连接两个数据框,其中列值(一组)是另一个的子集

来自分类Dev

将两个值合并到数据框中的一个单元格中

来自分类Dev

比较两个数据框,然后根据另一个数据框向其中一个数据框添加新列

来自分类Dev

是否有一个函数可以获取熊猫数据帧时间序列上两个值之间的差异?

来自分类Dev

熊猫基于一个表中的一列合并两个数据帧,该数据框位于另一表中的两列之间

来自分类Dev

合并两个可观察对象,其中一个优先级更高

来自分类Dev

合并/相交两个集合而不更改其中一个集合

来自分类Dev

合并两个Notepad ++文件,然后覆盖其中一个文件

来自分类Dev

合并两个具有相似值但日期熊猫不同的不同数据框

来自分类Dev

如何在索引上合并两个熊猫数据框但如何填充缺失值

来自分类Dev

Pandas:检查一个数据框的日期是否在另一个数据框的两个日期之间并替换值

Related 相关文章

  1. 1

    PySpark:合并一个值(来自第一个数据框)介于两个值(来自第二个数据框)之间的数据框

  2. 2

    合并两个熊猫数据框,其中一个是另一个的子集(或仅填充列的子集)

  3. 3

    合并两个熊猫数据框,其中一个日期不常见,应该在最近的日期之前合并

  4. 4

    合并两个熊猫数据框,其中一个日期不常见,应在最近的日期之前合并

  5. 5

    熊猫:更新其中一个列缺少数据的行的数据框值

  6. 6

    如何使用两个熊猫数据框创建一个新数据框,其中一个数据框具有特定的行?

  7. 7

    在R中,如何合并两个数据帧,其中一个中的列名等于另一个中的行值?

  8. 8

    如何从“介于”两个条件之间的数据框中检索值

  9. 9

    创建一个熊猫数据框,其中两个长度不等的向量之间存在差异

  10. 10

    在两个给定日期之间选择熊猫数据框,其中两列的值相等

  11. 11

    匹配两个数据帧并更改其中一个数据帧中的值

  12. 12

    连接两个数据框并扩展其中一个的内容

  13. 13

    比较两个数据框并创建一个报告,其中给出字段名称和旧值/新值之间存在差异的地方

  14. 14

    更改数据框中的条目取决于它们是在两个值之间还是在一个值以下

  15. 15

    合并两个结构相同的表,其中一个表具有优先级,并且按字段值排除

  16. 16

    查找两个数组之间的所有值组合,其中一个数组中的值只能使用一次?

  17. 17

    熊猫如何在数据框的两个行值之间添加其他值

  18. 18

    如何使用lubridate软件包计算两个日期向量之间的月份数(其中一个向量具有NA值)?

  19. 19

    连接两个数据框,其中列值(一组)是另一个的子集

  20. 20

    将两个值合并到数据框中的一个单元格中

  21. 21

    比较两个数据框,然后根据另一个数据框向其中一个数据框添加新列

  22. 22

    是否有一个函数可以获取熊猫数据帧时间序列上两个值之间的差异?

  23. 23

    熊猫基于一个表中的一列合并两个数据帧,该数据框位于另一表中的两列之间

  24. 24

    合并两个可观察对象,其中一个优先级更高

  25. 25

    合并/相交两个集合而不更改其中一个集合

  26. 26

    合并两个Notepad ++文件,然后覆盖其中一个文件

  27. 27

    合并两个具有相似值但日期熊猫不同的不同数据框

  28. 28

    如何在索引上合并两个熊猫数据框但如何填充缺失值

  29. 29

    Pandas:检查一个数据框的日期是否在另一个数据框的两个日期之间并替换值

热门标签

归档