Переименование столбцов при запросе с помощью SQLAlchemy в Pandas DataFramePython

Программы на Python
Ответить
Anonymous
 Переименование столбцов при запросе с помощью SQLAlchemy в Pandas DataFrame

Сообщение Anonymous »

Есть ли способ сохранить имена атрибутов SqlAlchemy при запросе данных в кадр данных pandas?

Вот простое сопоставление моей базы данных. Для школьной таблицы я переименовал имя базы данных «SchoolDistrict» в более короткое «район». Я удалил несколько слоев из администратора базы данных, поэтому изменить их в исходном коде невозможно.

Код: Выделить всё

class School(Base):
__tablename__ = 'DimSchool'

id = Column('SchoolKey', Integer, primary_key=True)
name = Column('SchoolName', String)
district = Column('SchoolDistrict', String)

class StudentScore(Base):
__tablename__ = 'FactStudentScore'

SchoolKey = Column('SchoolKey', Integer, ForeignKey('DimSchool.SchoolKey'), primary_key = True)
PointsPossible = Column('PointsPossible', Integer)
PointsReceived = Column('PointsReceived', Integer)

school = relationship("School", backref='studentscore')
Итак, когда я запрашиваю что-то вроде:

Код: Выделить всё

query = session.query(StudentScore, School).join(School)
df = pd.read_sql(query.statement, query.session.bind)
В конечном итоге в возвращаемом df DataFrame я получаю базовое имя «SchoolDistrict» для столбца, а не имя моего атрибута.

РЕДАКТИРОВАТЬ:
Еще более неприятный случай — когда в таблицах существуют повторяющиеся имена столбцов. Например:

Код: Выделить всё

class Teacher(Base):
__tablename__ = 'DimTeacher'

id = Column('TeacherKey', Integer, primary_key=True)
fname = Column('FirstName', String)
lname = Column('FirstName', String)

class Student(Base):
__tablename__ = 'DimStudent'

id = Column('StudentKey', Integer, primary_key=True)
fname = Column('FirstName', String)
lname = Column('FirstName', String)
Таким образом, запрос к обеим таблицам (как показано ниже) создает фрейм данных с повторяющимися столбцами FirstName и LastName.

Код: Выделить всё

query = session.query(StudentScore, Student, Teacher).join(Student).join(Teacher)
Можно ли переименовать эти столбцы в момент запроса? Сейчас мне трудно удержать голову в этих двух системах названий столбцов.

Подробнее здесь: https://stackoverflow.com/questions/311 ... -dataframe
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»