Я хотел бы создать DataFrame для панд, используя pandas.read_sql_query()
, соединив две таблицы. Это мой код:
import pandas as pd
connection = ...
query = 'SELECT T0.*, T1.* FROM %s T0 LEFT JOIN %s T1 ON T0.NUMPERSO = T1.NUMPERSO' % (TABLE, TABLE_VARS)
raw_train_data = pd.read_sql_query(query, connection, index_col='numperso')
Приведенный выше код создает df raw_train_data
, но затем raw_train_data.index
возвращает:
Float64Index([[35477725.0, nan], [56756339.0, nan], [16596475.0, nan],
[15921969.0, nan], [21866760.0, nan], [24199683.0, nan],
[17290497.0, nan], [12785913.0, nan], [37230860.0, nan],
[19049184.0, nan],
...
[11332158.0, nan], [19624233.0, nan], [18763121.0, nan],
[27757040.0, nan], [14169924.0, nan], [15978910.0, nan],
[39321116.0, nan], [27472225.0, nan], [33970568.0, nan],
[14526836.0, nan]],
dtype='float64', name='numperso', length=289907)
Я думаю, что проблема в том, что index_col='numperso'
существует в обеих таблицах, но установка index_col='t0.numperso'
дает ошибку, и я хочу использовать только один 'numperso' в качестве индекса.
Можно ли указать, чтобы при импорте таблиц в качестве индекса использовался только один столбец?
EDIT :
Я понимаю, что проблема в том, что столбец «NUMPERSO» принадлежит обеим таблицам. В общем случае столбцы с одинаковыми именами в обеих таблицах не удаляются на шаге pd.read_sql_query()
. Я не указывал индекс, удалял дублирующиеся столбцы (с тем же именем, например 'NUMPERSO') и устанавливал индекс вручную:
raw_train_data = pd.read_sql_query(query, connection)
raw_train_data = raw_train_data.loc[:,~raw_train_data.columns.duplicated()]
train_data.set_index('numperso', inplace=True)