大熊猫与列条件合并

时间:2019-11-20 11:55:35

标签: python pandas merge

打招呼,​​

有人知道如何使用 pandas 根据特定的行为连接两个数据框,请不要使用pandas来使用其他库。

df1 inner join df2 where df1.t < df2.t ..

1 个答案:

答案 0 :(得分:1)

在sql中执行,它带有Python的标准库。

from sqlite3 import sqlite3
import pandas

# define your dataframes here 
df1 = ...
df2 = ...

# load the dataframes to memory
sql_ptr = sqlite3.connect(':memory:')
df1.to_sql('df1', sql_ptr)
df2.to_sql('df2', sql_ptr)

# execute the query
df3 = pd.read_sql_query("select * from df1 inner join df2 on <insert columns to join on> where df1.ts < df2.ts", sql_ptr)

并且请记住,该查询将执行两个不同的步骤:

  1. 内部联接==>指定列上的交点
  2. 在给定条件下过滤结果表(!在其他列上给出!)

关系代数中的内部联接是两个集合之间的交点==>在列之间的条件(隐式相等条件除外)上没有内部联接这样的事情

例如此查询"select * from df1 inner join df2 on df1.ts = df2.ts where df1.ts < df2.ts"将产生一个空视图,因为内部联接将在表df1和df2之间找到一个空交集。