Tri*_*riz 6 python csv dictionary data-structures pandas
我希望导出一个字典,其中包含字典列表作为每个键:值对的值:
\n\ndict = {'key_1':\n [{'key_a': foo_1, 'key_b': bar_1}, \n {'key_a': foo_2, 'key_b': bar_2}], \n 'key_2':\n [{'key_c': foo_1, 'key_d': bar_1}], \n {'key_c': foo_2, 'key_d': bar_2}] \n ...}\nRun Code Online (Sandbox Code Playgroud)\n\n所需的输出将是一个 .csv 文件,其中包含第一个字典的键(key_1、key_2 等)作为第一个标题行,然后是嵌套字典的键(key_a、key_b 等)作为第二个标题行对应于其各自的键。
\n\n所需输出的示例如下所示,其中列表索引列引用存储在字典列表中每个相应索引处的数据:
\n\n\xe2\x95\x94\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\xa6\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\xa4\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x97\n\xe2\x95\x91 \xe2\x95\x91 key_1 \xe2\x94\x82 key_2 \xe2\x95\x91\n\xe2\x95\x91 List Index \xe2\x95\xa0\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\xa4\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\xaa\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\xa4\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\xa3\n\xe2\x95\x91 \xe2\x95\x91 key_a \xe2\x94\x82 key_b \xe2\x94\x82 key_c \xe2\x94\x82 key_d \xe2\x95\x91\n\xe2\x95\xa0\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\xac\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\xaa\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\xaa\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\xaa\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\xa3\n\xe2\x95\x91 0 \xe2\x95\x91 foo_1 \xe2\x94\x82 bar_1 \xe2\x94\x82 foo_1 \xe2\x94\x82 bar_1 \xe2\x95\x91\n\xe2\x95\x9f\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x95\xab\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xbc\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xbc\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xbc\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x95\xa2\n\xe2\x95\x91 1 \xe2\x95\x91 foo_2 \xe2\x94\x82 bar_2 \xe2\x94\x82 foo_2 \xe2\x94\x82 bar_2 \xe2\x95\x91\n\xe2\x95\x9f\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x95\xab\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xbc\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xbc\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xbc\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x95\xa2\n\xe2\x95\x91 2 \xe2\x95\x91 foo_3 \xe2\x94\x82 bar_3 \xe2\x94\x82 foo_3 \xe2\x94\x82 bar_3 \xe2\x95\x91\n\xe2\x95\x9a\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\xa9\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\xa7\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\xa7\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\xa7\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x9d\nRun Code Online (Sandbox Code Playgroud)\n\n\n\n\n平台:树莓派 3b+、Python 3.6
\n
目前,我正在研究执行此操作的不同选项,因此没有任何接近工作的连贯代码。然而,按照优先顺序,以下是我正在考虑的一些选项:
\n\n使用 pandas 形成一个反映所需表性质的数组。然后直接将其写入 CSV。
从上述字典数据结构写入 CSV。
\n\nimport csv\n\nfield_names = dict.keys()\nheader2 = {'%s' %dict.keys() : dict[key_1][0].keys()}\n\nwith open('project_data.csv', 'a') as csvfile:\n writer = csv.DictWriter(csvfile, fieldnames=field_names)\n writer.writeheader() # Write header row containing the top field names\n writer.writerow(header2) #Write row containing the second field names\nRun Code Online (Sandbox Code Playgroud)\n\n显然,该代码需要进一步开发才能使其按预期工作。
另一种我没有考虑过的方法?
\n\n以这种格式写入 CSV 的最佳方法是什么?
\n到目前为止我已经到达这里:
d = {'key_1':
[{'key_a': 'foo_1', 'key_b': 'bar_1'},
{'key_a': 'foo_2', 'key_b': 'bar_2'}],
'key_2':
[{'key_c': 'foo_1', 'key_d': 'bar_1'},
{'key_c': 'foo_2', 'key_d': 'bar_2'}]}
df = pd.DataFrame(d)
df1 = []
for col in df.columns:
data = df[col].apply(pd.Series)
data = df1.append(data)
df1 = pd.concat(df1,axis=1)
print(df1)
Run Code Online (Sandbox Code Playgroud)
这给你:
key_a key_b key_c key_d
0 foo_1 bar_1 foo_1 bar_1
1 foo_2 bar_2 foo_2 bar_2
Run Code Online (Sandbox Code Playgroud)
剩下的,您必须将相应的键映射到您的原始列名称,并且 tat 可以df1.loc[-1]作为标识符放置。一旦我得到一些东西,我就会更新。
| 归档时间: |
|
| 查看次数: |
5588 次 |
| 最近记录: |