python - 将包含一些标量和一些数组值的字典写入 csv
问题描述
我有一个类似于以下示例的字典:
dict = {key1: value1, key2: [arrayValue1, arrayValue2]}
我想将其写入 CSV 文件,格式如下:
key1 key2
value1 arrayValue1
arrayValue2
搜索类似的问题,如果所有值都是标量或数组,我找到了编写字典的方法,但如果值是两者的组合,我还没有找到答案。
我有以下用于编写标量值的代码:
with open(filename, 'w') as f:
w = csv.DictWriter(f, dict.keys())
w.writeheader()
w.writerow(dict)
以及以下用于写入数组值的代码:
with open(filename, "w") as outfile:
writer = csv.writer(outfile)
writer.writerow(dict.keys())
writer.writerows(zip(*dict.values()))
提前致谢。
解决方案
不要声明变量dict
,因为 this 代表我们将在这里使用的 Python 内置函数。而是使用诸如dct
.
dct = {"key1": "value1", "key2": ["arrayValue1", "arrayValue2"]}
首先,将每个标量放入一个数组中。
myvalues = [ x if isinstance(x, list) else [x] for x in dct.values() ]
接下来,使每个数组都与最大数组一样长。用空字符串填补空白。
maxlength = max([len(x) for x in myvalues])
myvalues = [ x + (maxlength - len(x))*[""] for x in myvalues ]
现在您可以重建您的字典,将其转换为 pandas DataFrame 并将此 DataFrame 保存为 CSV 文件。
import pandas as pd
dct = dict(zip(dct.keys(), myvalues))
df = pd.DataFrame.from_dict(dct)
df.to_csv("your_filename_goes_here.csv", index=False)
然后你就有了你的文件。
推荐阅读
- cucumber - 黄瓜数据驱动
- firefox - Firefox 位置栏自动完成:建议访问最多的完整 URL,而不是主机
- javascript - $http .then() 后无法追加
- jquery - 无法在 DIV 中加载外部页面
- wpf - WPF ProgressBar 不更新
- .net - 在 asp.net mvc umbraco 中的 URL 重写
- c++ - C++ 模板的前向声明
- visual-studio - 此产品需要 Microsoft Visual Studio Express 2012 for Web
- sql - 如何更改查询结果中具有特定值的行的位置
- jquery - 我想知道哪个复选框被选中所有复选框只有相同的类名