【发布时间】:2017-07-01 19:43:02
【问题描述】:
我有一个代码可以计算几个指标,这些指标存储为字典的 3 维字典。我想将这本词典打印到 csv 文件中 - 但还没有找到这样做的好方法。
计算完字典中的所有元素后,我想将其打印到文件中(其中不同的 periods 是文件的标题,keys 和指标 a, b, and c 应该是列 - 列键和列指标)。
有没有一种简单的方法可以将其打印到文件中? (我的第一次尝试是 pandas,但这没有用)
谢谢
from collections import defaultdict
import pandas as pd
import os
import random
# 3 dimensional dictionary that stores integers
output_dict = defaultdict(lambda: defaultdict(lambda: defaultdict(int)))
# Array of periods
periods = range(0, 2)
# relevant keys
keys = ["key1", "key2"]
# Iterate over all periods
for period in periods:
# Iterate over all relevant keys
for key in keys:
# Store results for key for each time period for each category ("a", "b", or "c")
output_dict[key][period]["a"] += random.randint(1, 1000)
output_dict[key][period]["b"] += random.randint(1, 1000)
output_dict[key][period]["c"] += random.randint(1, 1000)
# This is the tricky part!!!
# Store results
pd.DataFrame(output_dict).to_csv("output_dict.csv", index=False)
# the dictionary may look as follows:
output_dict = {"key1": {0: {"a": 0.9, "b": 0.2, "c": 0.5}, 1:{"a": 0.91, "b": 0.3, "c": 0.4}},
"key2": {0: {"a": 0.4, "b": 0.33, "c": 0.34}, 1: {"a": 0.21, "b": 0.73, "c": 0.54}}}
【问题讨论】:
-
首先,尝试将您的数据转换为具有
key、a、b和c列的 Pandas 数据框。然后,转储到 CSV 应该相当轻松。 -
如果你能举一个例子说明你的字典是什么样的,你希望 csv 是什么样的
-
@Andreas 可能。实际上,可能有一种简单的方法没有
pandas。如果您可以举一个您正在使用的数据的示例,那么有人可能会回答您的问题 -
@Andreas 是的。 pandas.pydata.org/pandas-docs/stable/generated/… 只需将您的数据转换为必要的 DataFrame。
-
@Andreas 您似乎提供了某种电子表格程序的屏幕截图,这使得实际 csv 的外观有些模糊......
标签: python csv pandas dictionary