SQLAlchemy查询结果数据转化为DataFrame

起因

为了方便处理数据,Python常常会用pandas中的DataFrame对数据进行处理。有一次我想把SQLAlchemy查询出来的结果对象转化为DataFrame,期间遇到了一些问题

问题现象

这是model部分代码

class InvAppService(db.Model):
    __tablename__ = 'inv_app_service'
    id = db.Column(db.Integer, primary_key=True)
    ip = db.Column(db.String(16), unique=True, nullable=False)
    host = db.Column(db.String(32))
    
    def to_json(self):
        return {
            'ip': self.ip,
            'host': self.host,
            'LDR': self.app.app_devopses_name().get('LDR'),
            'DEV': self.app.app_devopses_name().get('DEV'),
            'INF': self.app.app_devopses_name().get('INF'),
            'OPS': self.app.app_devopses_name().get('OPS')
        }
        
    def__repr__(self):
       return '<InvAppService %r>' % self.name

在控制端我想把查询出的结果转化为df,刚开始用了下面的方法,结果rtn一直是空,但单独在jupyter测试pd.DataFrame().append({’IP’:xx,‘host’:xx,…},ignore_index=True)是可以加入数据的。后来经过各种尝试,包括把service.to_json_ip()先转化为Series再加入df也还是不行

import pandas as pd
……
services = InvAppService.query.all()
rtn = pd.DataFrame()
for service in services:
    rtn.append(service.to_json_ip(),ignore_index=True)

最后采用了下面的方法才正常转化为df格式数据

import pandas as pd
……
services = InvAppService.query.filter_by(status_code='00').all()
rtn = []
for service in services:
    rtn.append(service.to_json_ip())
rtn = pd.DataFrame(rtn)
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
数据分析和处理中,将数据转换为DataFrame格式是非常常见的一步。DataFrame是Pandas库中的核心数据结构,它是一个二维表格,类似于SQL的表格或电子表格,每一行代表一个观测值,每一列代表一个变量。DataFrame允许数据以结构化的方式进行存储和操作,非常适合处理结构化数据。 将数据转换为DataFrame的过程通常包括以下几个步骤: 1. **列表或数组**:如果你有嵌套的数据列表,比如一维列表的子列表,可以使用`pd.DataFrame(data)`直接创建,`data`就是这些列表的集合。 2. **字典**:如果数据是字典形式,其中的键作为列名,值作为行,可以使用`pd.DataFrame(data)`创建,例如`pd.DataFrame({'Name': ['Alice', 'Bob'], 'Age': [25, 30]})`。 3. **CSV文件**:读取CSV(逗号分隔值)文件可以用`pd.read_csv('filename.csv')`,这会返回一个DataFrame。 4. **Excel文件**:读取Excel文件用`pd.read_excel('filename.xlsx')`,同样会生成DataFrame。 5. **网络数据**:从Web API获取的数据,如JSON格式,可以先转化为字典或字典列表,然后用`pd.json_normalize()`或`pd.DataFrame(json_data)`。 6. **数据查询**:如果你的数据来自数据库,可以使用Pandas连接器如pandasql或SQLAlchemy查询后导入DataFrame。 7. **特定格式的API响应**:对于API返回的复杂格式,可能需要先解析再转换。 转换完成后,你可以对DataFrame执行各种操作,如过滤、排序、计算统计等,极大地增强了数据处理的灵活性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值