我这样创建Pandas数据框,我没有直接从数据库中获取,而是先用setdefault
和append
创建一个循环,原因是在sql中我使用Inner Join
,并且必须用append row[5]
单独添加。
接下来我使用Pandas体内的数据集。
有没有一种不使用setdefault和append而创建数据集的更高性能的方法?或者我使用的代码已经很高性能了?
newlist = {}
conn = sqlite3.connect('....')
cursor = conn.cursor()
x = cursor.execute('''SQL CODES WITH INNER JOIN''')
for row in x.fetchall():
newlist.setdefault((row[0],row[1],row[2], row[3], row[4]), []).append(row[5])
# Transform dataset to DataFrame
df = pd.DataFrame.from_dict(newlist, orient='index')
2条答案
按热度按时间5hcedyr01#
我不了解您的SQL查询(也没有材料可供测试),但最简单的方法可能是使用
pd.read_sql
。例如:
aydmsdu92#
提高这段代码性能的一种方法是使用元组列表存储数据库查询中的数据,然后使用panda.DataFrame()从元组列表创建DataFrame,这样可以避免使用字典、setdefault()和append()方法的开销。
下面是如何修改代码来实现这一点:
这应该比原始代码性能更高,因为它避免了使用字典以及setdefault()和append()方法的开销。