【问题标题】:Writing dictionary of dataframes to file将数据帧字典写入文件
【发布时间】:2018-11-20 00:39:24
【问题描述】:

我有一本字典,对于字典中的每个键,我都有一个 pandas 数据框。 key 到 key 的数据帧长度不等。

获取连接到每个键的数据帧需要一些时间,因此我希望将我的数据帧字典保存到一个文件中,这样我就可以将文件读入 Python 而不是每次我都运行我的脚本打开 Python。

我的问题是:您如何建议将带有数据框的字典写入文件 - 并再次读取它?我尝试了以下方法,其中 dictex 是字典:

w = csv.writer(open("output.csv", "w"))
for key, val in dictex.items():
    w.writerow([key, val])

但我不确定我是否得到了我想要的,因为我很难再次将文件读入 Python。

感谢您的宝贵时间。

【问题讨论】:

  • 这些数据框是否具有相同的列集?如果是这样,您可以为每个数据框添加一个额外的列并在其中存储一个键,然后合并所有数据框并将结果保存到一个文件中。
  • 但是如果你在这里添加一个最小的工作示例就可以了。
  • 不,数据框的尺寸不相等(不相等的行和/或不相等的列)

标签: python pandas dictionary dataframe writetofile


【解决方案1】:

关于单独保存数据帧而不使用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()

【讨论】:

  • 嗨@artona,谢谢你的回答。它不适用于我需要写入文件的字典,因为它的值既是数据帧又是整数。我已经在这里发布了我的问题:stackoverflow.com/questions/65098346/…,以防你能提供帮助:)
猜你喜欢
  • 2019-07-27
  • 2021-11-17
  • 1970-01-01
  • 2019-08-06
  • 2023-03-03
  • 2020-08-26
  • 2019-01-16
相关资源
最近更新 更多