Как переименовать столбцы, полученные с помощью SQL INNER JOIN? - PullRequest
0 голосов
/ 04 декабря 2018

Я читал сравнение SQL и Pandas на веб-сайте http://pandas.pydata.org/pandas-docs/stable/comparison_with_sql.html. Здесь, когда я делал 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

Ответы [ 2 ]

0 голосов
/ 04 декабря 2018

Вам нужно создать псевдоним для имен столбцов.Вместо использования конструкции SELECT * вы хотите указать, какой столбец вы хотите вернуть, и использовать ключевое слово as, чтобы выбрать отображаемое имя столбца в наборе результатов.

Для получения дополнительной информации,см. документацию sqlite

SELECT 
    df1.key,
    df1.value as df1_value,
    df2.value as df2_value
FROM df1
INNER JOIN df2
    ON df1.key = df2.key
0 голосов
/ 04 декабря 2018

Использование 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;

Поскольку ключи одинаковы, вам не нужно включать значения из обеих таблиц.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...