python - 熊猫与列上的条件合并
问题描述
问候大家,
有谁知道如何根据使用熊猫的特定行为加入两个数据框,请使用熊猫,不要使用其他库。
喜欢 df1 inner join df2 where df1.t < df2.t ..
解决方案
用 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)
请记住,此查询将执行两个不同的步骤:
- 内连接 ==> 指定列上的交集
- 根据给定条件过滤结果表(!在其他列上给出!)
关系代数中的内连接是两个集合之间的交集 ==> 列之间没有内连接这样的东西(除了隐含的相等条件)
例如,此查询"select * from df1 inner join df2 on df1.ts = df2.ts where df1.ts < df2.ts"
将产生一个空视图,因为内部连接将在表 df1 和 df2 之间找到一个空的交集。
推荐阅读
- html - 如何根据内容设置 div 标签的样式?
- javascript - How to bypass React's error handling of colors
- laravel - 作业总是在 laravel 作业中失败 Redis 速率限制
- django - Django: "auto_now_add=True" giving incorrect time
- react-native - react navigation back button back to spalsh screen
- swift - I can't get an arc to fill in Swift 4
- c++ - 为什么我无法构建静态链接的单线程 Boost 库?
- python-3.x - Python3 pip install git-pre-push-hook
- css - Make button all the same sizes
- excel - Excel Multiple Criteria