Python - 包含数组的字典到 csv 文件

Python - Dictionary with arrays to csv file

我有一本字典,有四个键,每个键指向一个数组:

import pandas as pd
import csv

complete = {'average': ['a1', 'a2', 'a3', 'a4'], 'hard': ['h1', 'h2', 'h3', 'h4','h5'], 'easy': ['e1', 'e2', 'e3', 'e4','e5','e6'], 'difficult': ['d1', 'd2', 'd3', 'd4','d5','d6','d7']}

df = pd.DataFrame(complete,orient='index').to_csv('out.csv')
df.transpose()

如何将此字典写入 csv 文件,其中键代表一列 header,而数组将填充下面的相应列。

average | hard | easy | difficult |
a1      | h1   | e1   | d1        |
a2      | h2   | e2   | d2        |
a3      | h3   | e3   | d3        |
a4      | h4   | e4   | d4        |
        | h5   | e5   | d5        |
               | e6   | d6        |
                      | d7        |

如您所知,我已尝试同时使用 pandas 和 csv 库。不确定我做错了什么,但这段代码产生以下输出:

TypeError: __init__() got an unexpected keyword argument 'orient'

您可以为字典中的每个键、值对创建一个 DataFrame 列表 complete,然后使用 pd.concat:

import pandas as pd

complete = {'average': ['a1', 'a2', 'a3', 'a4'],
            'hard': ['h1', 'h2', 'h3', 'h4', 'h5'],
            'easy': ['e1', 'e2', 'e3', 'e4', 'e5', 'e6'],
            'difficult': ['d1', 'd2', 'd3', 'd4', 'd5', 'd6', 'd7']}


df = [pd.DataFrame({ k : v }) for k, v in complete.items()]

df = pd.concat(df, axis=1)
print(df)

输出

  average hard easy difficult
0      a1   h1   e1        d1
1      a2   h2   e2        d2
2      a3   h3   e3        d3
3      a4   h4   e4        d4
4     NaN   h5   e5        d5
5     NaN  NaN   e6        d6
6     NaN  NaN  NaN        d7

可以通过以下方式将 DataFrame 保存到 csv 文件:

df.to_csv('output.csv', index=False) 

请参阅 to_csv here

上的文档

你的命令

df = pd.DataFrame(complete,orient='index').to_csv('out.csv')

缺少 from_dict:

df = pd.DataFrame.from_dict(complete, orient='index').transpose()
df.to_csv('out.csv')

另见 here