将数据帧字典写入文件
Writing dictionary of dataframes to file
我有一本字典,对于我字典中的每个键,我都有一个 pandas 数据框。从键到键的数据帧长度不等。
获取连接到每个键的数据帧需要一些时间,因此我希望将我的数据帧字典保存到一个文件中,这样我就可以将文件读入 Python 而不是运行 每次打开我的脚本 Python。
我的问题是:您建议如何将带有数据框的字典写入文件 - 并再次读入?我尝试了以下方法,其中 dictex 是字典:
w = csv.writer(open("output.csv", "w"))
for key, val in dictex.items():
w.writerow([key, val])
但我不确定我是否得到了我想要的,因为我很难再次将文件读入 Python。
感谢您的宝贵时间。
关于独立保存数据帧的规则,不使用SQL解决方案(或其他数据库格式)可以是以下代码:
import csv
import pandas as pd
def saver(dictex):
for key, val in dictex.items():
val.to_csv("data_{}.csv".format(str(key)))
with open("keys.txt", "w") as f: #saving keys to file
f.write(str(list(dictex.keys())))
def loader():
"""Reading data from keys"""
with open("keys.txt", "r") as f:
keys = eval(f.read())
dictex = {}
for key in keys:
dictex[key] = pd.read_csv("data_{}.csv".format(str(key)))
return dictex
(...)
dictex = loader()
您可以使用 pickle 在 python 中保存数据帧字典。
import pickle
df1 = pd.DataFrame(data={'a':[1,2,3], 'b':[4,5,6]})
df2 = pd.DataFrame(data={'a':[5,5,5,5,5], 'b':[5,5,5,5,5]})
d = {}
d['df1'] = df1
d['df2'] = df2
with open('dict_of_dfs.pickle', 'wb') as f:
pickle.dump(d, f)
我有一本字典,对于我字典中的每个键,我都有一个 pandas 数据框。从键到键的数据帧长度不等。
获取连接到每个键的数据帧需要一些时间,因此我希望将我的数据帧字典保存到一个文件中,这样我就可以将文件读入 Python 而不是运行 每次打开我的脚本 Python。
我的问题是:您建议如何将带有数据框的字典写入文件 - 并再次读入?我尝试了以下方法,其中 dictex 是字典:
w = csv.writer(open("output.csv", "w"))
for key, val in dictex.items():
w.writerow([key, val])
但我不确定我是否得到了我想要的,因为我很难再次将文件读入 Python。
感谢您的宝贵时间。
关于独立保存数据帧的规则,不使用SQL解决方案(或其他数据库格式)可以是以下代码:
import csv
import pandas as pd
def saver(dictex):
for key, val in dictex.items():
val.to_csv("data_{}.csv".format(str(key)))
with open("keys.txt", "w") as f: #saving keys to file
f.write(str(list(dictex.keys())))
def loader():
"""Reading data from keys"""
with open("keys.txt", "r") as f:
keys = eval(f.read())
dictex = {}
for key in keys:
dictex[key] = pd.read_csv("data_{}.csv".format(str(key)))
return dictex
(...)
dictex = loader()
您可以使用 pickle 在 python 中保存数据帧字典。
import pickle
df1 = pd.DataFrame(data={'a':[1,2,3], 'b':[4,5,6]})
df2 = pd.DataFrame(data={'a':[5,5,5,5,5], 'b':[5,5,5,5,5]})
d = {}
d['df1'] = df1
d['df2'] = df2
with open('dict_of_dfs.pickle', 'wb') as f:
pickle.dump(d, f)