在写入熊猫数据框之前,在SqlAlchemy中设置列顺序

la

我正在尝试使用SQLAlchemy构建表时设置列的顺序,截至目前,列以字母顺序显示,我目前拥有:

def data_frame(query, columns):
    def make_row(x):
        return dict([(c, getattr(x, c)) for c in columns]) 
    return pd.DataFrame([make_row(x) for x in query])

PackL = create_engine('mssql+pyodbc://u:pass@Server/db1?driver=SQL Server', echo=False)
Fabr = create_engine('mssql+pyodbc://u:pass@Server/db2?driver=SQL Server', echo=False)
Session = sessionmaker(bind=PackL)
session = Session()
Base = declarative_base()
metadata = MetaData()

class Tranv(Base):
    __tablename__= "Transactions"
    __table_args__= {'autoload': True, 'autoload_with':PackL}

newvarv = session.query(Tranv).filter_by(status='SCRAP').filter(Tranv.time_stamp.
between('2015-10-01', '2015-10-09'))

session.close()

dfx = data_frame(newvarv, ['action', 'employee_number', 'time_stamp', 'qty', 
'part_number', 'card_number'])

当前的dfx具有按字母顺序排列的列,但是我希望它按照创建数据帧dfx时定义列的顺序对其进行排序。因此,顺序为操作,员工编号,时间戳,数量,零件编号,卡号。我可以使用Pandas轻松地做到这一点,但这似乎是额外的(和不必要的)步骤。

我已经搜索了文档,谷歌和stackoverflow,但似乎没有什么真的可以满足我的需求。由于我对SQLAlchemy还是很陌生,因此我感谢您的帮助。我是否认为是因为我正在自动加载表,所以我不能轻易定义列的顺序(我确定有解决方法,但是不知道在文档中可能找到的位置) ?

乔里斯

列不在指定顺序中的原因与sql查询或sqlalchemy无关。这是由于您将查询输出转换为字典,然后将其提供给造成的DataFrame
由于字典在python中没有顺序,因此熊猫会按字母顺序对其进行排序,以产生可预测的输出。

使用dict的当前方法,您始终可以通过执行以下操作来更改列的顺序 dfx.reindex(columns=['action', ..., 'card_number'])


除了解释为什么不按您的情况订购外,也许还有更好的方法来解决此问题:

  • 使用内建的pd.read_sql_query使用会话和Query对象时,可以将selectable属性传递给read_sql_query以将其转换为DataFrame:

    query = session.query(Table)...
    df = pd.read_sql_query(query.selectable, engine)
    
  • 不要转换为字典,而是将输出保留为供您输入的元组DataFrame:这将保留查询输出的顺序。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在写入熊猫数据框之前,在SqlAlchemy中设置列顺序

来自分类Dev

熊猫将数据框列写入csv

来自分类Dev

更改熊猫数据框的列顺序

来自分类Dev

从熊猫数据框中读取或写入项目

来自分类Dev

用索引从熊猫数据框中设置子集列

来自分类Dev

新数据框中的熊猫设置列替换旧数据框

来自分类Dev

如何在Pandas数据框中的特定位置插入列?(更改熊猫数据框中的列顺序)

来自分类Dev

如何从熊猫数据框中的特定列写入多个Excel工作表?

来自分类Dev

在熊猫数据框中重新排列列的非连续顺序

来自分类Dev

如何使用方法链更改熊猫数据框中的列顺序?

来自分类Dev

同时写入数据框中的多个列

来自分类Dev

熊猫:写入条件以在数据框中过滤

来自分类Dev

如何反转熊猫数据框中的行顺序

来自分类Dev

熊猫中数据框行中的数据框列

来自分类Dev

如何合并不同数据框的两列,如果找到匹配项,则使用熊猫在新列中写入“ True”

来自分类Dev

从熊猫数据框中删除标题列

来自分类Dev

在熊猫数据框中对列进行排序

来自分类Dev

打包数据框列以在熊猫中列出

来自分类Dev

汇总熊猫数据框中的列组

来自分类Dev

比较熊猫数据框中的两列

来自分类Dev

检查数据框熊猫中的列列表

来自分类Dev

从熊猫数据框中删除许多列

来自分类Dev

将列放在熊猫数据框中

来自分类Dev

在列中追加熊猫数据框

来自分类Dev

在multindex熊猫数据框中添加列

来自分类Dev

连接熊猫数据框中的两列

来自分类Dev

清理熊猫数据框中的dict列

来自分类Dev

提取列熊猫数据框中的列表

来自分类Dev

熊猫数据框中的计算列

Related 相关文章

热门标签

归档