当列名不唯一时,将panda数据框索引设置为列名

时间:2019-10-07 17:11:03

标签: sql pandas sqlalchemy

我有两张股票报价器。

我创建了SQL联合查询以合并两个表。

query_combined = session\
.query(Table1, Table2)\
.join(Table2, Table1.ticker==Table2.ticker)

然后我将SQL馈送到Pandas以便在框架中加载:

df_combined = pandas\
    .read_sql(query_combined.statement, 
              query_combined.session.bind, 
              index_col='ticker')

但是,由于联接表中有两个“行情指示器”列,因此设置index_col ='ticker'将导致索引列'(ticker,ticker)'元组。 我只想指定“ ticker”列之一作为数据帧索引,但不确定如何。

我是熊猫的新手,并且确信这很简单,但是在谷歌搜索的那一刻,我还没有找到答案。预先感谢您为我指明了正确的方向。

1 个答案:

答案 0 :(得分:0)

请考虑with_labels以使用下划线<table>_<column>来修饰不明确的列:

df_combined = (pandas
                 .read_sql(query_combined.with_labels().statement, 
                           query_combined.session.bind, 
                           index_col='Table1_ticker')
              )

要缩短表名,请在连接之前alias个表:

t1 = aliased(t1, Table1)
t2 = aliased(t2, Table2)

query_combined = (session
                    .query(t1, t2)
                    .join(t2, t1.ticker==t2.ticker)
                  )