首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将Dataset对象转换为Pandas DataFrame的最简单方法是什么?

将Dataset对象转换为Pandas DataFrame的最简单方法是什么?
EN

Stack Overflow用户
提问于 2018-04-23 20:38:04
回答 4查看 12K关注 0票数 0

Python 数据集模块基于Sqlalchemy,并公开一个函数来返回名为all()的表中的所有记录。all()返回一个可迭代数据集对象。

代码语言:javascript
运行
复制
users = db['user'].all()

for user in db['user']:
   print(user['age'])

数据集对象转换为Pandas DataFrame对象的最简单方法是什么?

为了清楚起见,我对Dataset的功能感兴趣,因为它已经将表加载到Dataset对象中。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2018-06-28 15:02:00

这对我起了作用:

代码语言:javascript
运行
复制
import dataset
import pandas
db = dataset.connect('sqlite:///db.sqlite3')
data = list(db['my_table'].all())
dataframe = pandas.DataFrame(data=data)
票数 2
EN

Stack Overflow用户

发布于 2018-04-23 20:44:37

代码语言:javascript
运行
复制
import pandas as pd
df = pd.DataFrame(data=db['user'])
df

类似的

代码语言:javascript
运行
复制
pd.DataFrame(db['user'])

应该做同样的事

还可以指定列或索引:

https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.html

票数 1
EN

Stack Overflow用户

发布于 2018-04-24 03:50:40

在对数据集模块投入了大量时间之后,我发现all()可以被迭代成一个列表,然后变成一个熊猫数据。有更好的方法吗?

代码语言:javascript
运行
复制
import dataset
import pandas as pd

# create dataframe
df = pd.DataFrame()
names = ['Bob', 'Jane', 'Alice', 'Ricky']
ages = [31, 30, 31, 30]
df['names'] = names
df['ages'] = ages

print(df)

# create a dict oriented as records from dataframe
user = df.to_dict(orient='records')

# using dataset module instantiate database
db = dataset.connect('sqlite:///mydatabase.db')

# create a reference to a table
table = db['user']

# insert the complete dict into database
table.insert_many(user)

# use Dataset .all() to retrieve all table's rows
from_sql = table.all()  # custom ResultIter type (iterable)

# iterate ResultIter type into a list
data = []
for row in from_sql:
    data.append(row)

# create dataframe from list and ordereddict keys
df_new = pd.DataFrame(data, columns=from_sql.keys)

# this does not drop the id column, but it should??
df_new.drop(columns=['id'])

print(df_new)
代码语言:javascript
运行
复制
'''
   names  ages
0    Bob    31
1   Jane    30
2  Alice    31
3  Ricky    30

      id  names  ages
0      1    Bob    31
1      2   Jane    30
2      3  Alice    31
3      4  Ricky    30

'''
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49989579

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档