sql - 如何重命名 SQL INNER JOIN 获得的列?
问题描述
我在http://pandas.pydata.org/pandas-docs/stable/comparison_with_sql.html网站上阅读了 SQL 和 Pandas 的比较 。在这里,当我在做 sql inner join 时,列的名称是重复的。如何给他们起合适的名字?
import numpy as np
import pandas as pd
import sqlite3
np.random.seed(100)
# database
con = sqlite3.connect("mydb.db")
# dataframes
df1 = pd.DataFrame({'key': ['A', 'B', 'C', 'D'],
'value': np.random.randn(4)})
df2 = pd.DataFrame({'key': ['B', 'D', 'D', 'E'],
'value': np.random.randn(4)})
print(df1, '\n\n', df2)
# add dataframes to database
df1.to_sql('df1',con,if_exists='replace',index=False)
df1.to_sql('df2',con,if_exists='replace',index=False)
q = """
SELECT *
FROM df1
INNER JOIN df2
ON df1.key = df2.key;
"""
pd.read_sql_query(q,con)
这给
key value key value
0 B 0.342680 B 0.981321
1 D -0.252436 D 0.221180
2 D -0.252436 D 0.514219
如何获得这样的表:
key df1_value df2_value
0 B 0.342680 0.981321
1 D -0.252436 0.514219
2 D -0.252436 0.221180
解决方案
使用as
:
SELECT df1.key as key1, df1.value as df1_value, df2.value as df2_value
FROM df1 INNER JOIN
df2
ON df1.key = df2.key;
因为键是相同的,所以您不需要包含两个表中的值。
推荐阅读
- asp.net-mvc - 如何使用 LINQ 过滤 ViewData[ " " ] = new SelectList() 中的项目?
- jmeter - 是否可以在 inPrivate 模式下使用 Microsoft Edge 或在 JMeter 中使用 JSR223 Sampler 使用访客帐户?
- python - 如何访问列表中的列表项?
- r - 安装包 IDSpatialStats 具有非零退出状态
- javascript - 使用“$Keys”对联合类型和类型转换进行流程细化
- python - 如何将汇总数据合并到非汇总数据?
- jquery - JS Accordion 只关闭自己的部分而不是其他部分
- c# - 使用 WinUI3/Project Reunion 0.5 时,我有哪些选择/打开文件和文件夹的选项?
- javascript - 为什么这段代码在执行的某一时刻会混淆用户选择,我真的找不到问题
- python - Python dict的视图对象的等价性