【问题标题】:Converting Dictionary to CSV File - multiple values per key将字典转换为 CSV 文件 - 每个键有多个值
【发布时间】:2017-11-07 22:00:04
【问题描述】:

我有一个包含三个键的字典,但每个键都有多个值。

mydictionary = {'wave': [14.26661, 14.3583, 14.45, 14.54169, 14.63338, etc], 'flux': [2.092778, 1.188152, 2.130176, 3.201674, 2.043295, etc], 'unc': [0.7566527, 0.7157381, 0.7030209, 0.6992941, etc]}

我想将字典保存为以下格式的 csv。

波,通量,unc

14.2666、2.0927、0.756

14.35、1.18、0.715

每个键都是一个列标题,每个值都在它自己的行中。最终的 csv 应该有 3 列和 116/117 行。

这是我得到的最接近的,但 csv 只写入第一列,并且正在跳过行。

with open(n + '_sp.csv', 'w') as f:
    w = csv.writer(f)
    w.writerow(['wavelength','flux', 'unc'])
    for key, values in mydictionary.items():
       for value in values:
           w.writerow([value])

【问题讨论】:

  • 你有熊猫吗?这只是一个班轮:pd.DataFrame(mydictionary).to_csv(file)
  • 如果使用包没问题,试试pandas.DataFrame.from_dict,然后to_csv()
  • 注意:对于 Python 2.x,您应该使用 wb 打开文件

标签: python csv dictionary


【解决方案1】:

您可以将所有值列表收集到一个列表中然后转置,因此行逐行堆叠,与标题对齐:

with open(n + '_sp.csv', 'w') as f:
    w = csv.writer(f)
    header = ['wavelength', 'flux', 'unc']
    w.writerow(header)
    rows = zip(*[mydictionary[h] for h in header])
    w.writerows(rows)

【讨论】:

    猜你喜欢
    • 2014-03-20
    • 2014-04-06
    • 2013-10-20
    • 2023-03-16
    • 2011-07-19
    • 2019-12-14
    • 2012-01-30
    • 2019-07-18
    • 2015-07-25
    相关资源
    最近更新 更多