【问题标题】:Python - Dictionary with arrays to csv filePython - 带有数组的字典到 csv 文件
【发布时间】:2021-04-02 09:51:57
【问题描述】:

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

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 文件,其中键代表一个列标题,而数组将填充下面的相应列。

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'

【问题讨论】:

    标签: python pandas export-to-csv


    【解决方案1】:

    您可以为字典中的每个键、值对创建一个 DataFrame 列表完整,然后使用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上的文档

    【讨论】:

      【解决方案2】:

      你的命令

      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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-09-11
        • 2021-01-31
        • 1970-01-01
        • 1970-01-01
        • 2019-07-14
        • 2011-10-15
        • 1970-01-01
        • 2018-03-23
        相关资源
        最近更新 更多