Python 将数据集对象转换为数据帧的最简单方法是什么?

Python 将数据集对象转换为数据帧的最简单方法是什么?,python,dataframe,orm,sqlalchemy,dataset,Python,Dataframe,Orm,Sqlalchemy,Dataset,Python基于Sqlalchemy并公开了一个函数来返回名为all()的表中的所有记录。all()返回一个iterable数据集对象 users = db['user'].all() for user in db['user']: print(user['age']) 将数据集对象转换为数据帧对象的最简单方法是什么? 为了清楚起见,我对利用Dataset的功能感兴趣,因为它已经将表加载到Dataset对象中 import pandas as pd df = pd.DataFrame(

Python基于Sqlalchemy并公开了一个函数来返回名为all()的表中的所有记录。all()返回一个iterable数据集对象

users = db['user'].all()

for user in db['user']:
   print(user['age'])
将数据集对象转换为数据帧对象的最简单方法是什么?

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

import pandas as pd
df = pd.DataFrame(data=db['user'])
df
同样地

pd.DataFrame(db['user'])
我们应该做同样的事情

还可以指定列或索引:

同样地

pd.DataFrame(db['user'])
我们应该做同样的事情

还可以指定列或索引:


在投入大量时间之后,我发现all()可以迭代到一个列表中,然后变成一个数据帧。有更好的方法吗

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)


在投入大量时间之后,我发现all()可以迭代到一个列表中,然后变成一个数据帧。有更好的方法吗

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)


我已经创建了一些帮助函数,这些函数将使此过程更加简单:

import dataset
import pandas as pd

def df_dataset_save(df, table_name, db_name='db'):
    try:
        df = df.to_dict(orient='records')
        db = dataset.connect('sqlite:///' + db_name + '.sqlite')
        table = db[table_name]
        table.insert_many(df)
        return 'success'
    except Exception as e:
        print(e)
        return None


def df_dataset_query_all(table_name, db_name='db', ids=False):
    try:
        db = dataset.connect('sqlite:///' + db_name + '.sqlite')
        table = db[table_name]
        from_sql = table.all()
        data = []
        for row in from_sql:
            data.append(row)
        df = pd.DataFrame(data, columns=from_sql.keys)
        if not ids:
            df.drop('id', axis=1, inplace=True)
        return df
    except Exception as e:
        print(e)
        return None


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

# save dataframe
df_dataset_save(users, 'users')

# query saved dataframe
new_user = df_dataset_query_all('users')

print(new_user)

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

我已经创建了一些帮助函数,这些函数将使此过程更加简单:

import dataset
import pandas as pd

def df_dataset_save(df, table_name, db_name='db'):
    try:
        df = df.to_dict(orient='records')
        db = dataset.connect('sqlite:///' + db_name + '.sqlite')
        table = db[table_name]
        table.insert_many(df)
        return 'success'
    except Exception as e:
        print(e)
        return None


def df_dataset_query_all(table_name, db_name='db', ids=False):
    try:
        db = dataset.connect('sqlite:///' + db_name + '.sqlite')
        table = db[table_name]
        from_sql = table.all()
        data = []
        for row in from_sql:
            data.append(row)
        df = pd.DataFrame(data, columns=from_sql.keys)
        if not ids:
            df.drop('id', axis=1, inplace=True)
        return df
    except Exception as e:
        print(e)
        return None


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

# save dataframe
df_dataset_save(users, 'users')

# query saved dataframe
new_user = df_dataset_query_all('users')

print(new_user)

'''
    names  ages
0     Bob    31
1    Jane    30
2   Alice    31
3   Ricky    30
'''
这对我很有用:

import dataset
import pandas
db = dataset.connect('sqlite:///db.sqlite3')
data = list(db['my_table'].all())
dataframe = pandas.DataFrame(data=data)
这对我很有用:

import dataset
import pandas
db = dataset.connect('sqlite:///db.sqlite3')
data = list(db['my_table'].all())
dataframe = pandas.DataFrame(data=data)

此解决方案是否根据问题使用数据集模块?我没有看到数据集的导入。此解决方案是否根据问题使用数据集模块?我没有看到数据集的导入。我将签出并报告。我将签出并报告。