【问题标题】:How to create a custom CSV file from Python dictionary?如何从 Python 字典创建自定义 CSV 文件?
【发布时间】:2021-03-25 21:05:52
【问题描述】:

我想创建一个这样的 CSV 文件:

Features, Value
f1, 1
f2, 2
f3, 3

但我明白了:

f1, f2, f3
1, 2, 3

我写的代码:

my_dict = {'f1': 1, 'f2': 2, 'f3': 3}
with open('testcsv.csv', 'w') as f:
    w = csv.DictWriter(f, my_dict.keys())
    w.writeheader()
    w.writerow(my_dict)

我该怎么办?

【问题讨论】:

  • 你认为你的代码会从哪里得到FeaturesValue
  • 写在writeheader()中会报错!
  • 标题的标签必须与字典的键相匹配。参考documentation中的示例

标签: python csv dictionary


【解决方案1】:

您需要先根据预期结构转换数据

data = [{'Features':i,'Value':my_dict[i]} for i in my_dict]

完成后,您可以使用 pandas 将其保存为 CSV,如下所示:

import pandas as pd
df = pd.DataFrame(data)
df.to_csv('testcsv.csv',index=None)

生成的 csv :

Features,Value
f1,1
f2,2
f3,3

【讨论】:

  • 对于这项任务来说,熊猫是不是有点矫枉过正?如果他不想支持 c 实现怎么办..
  • @adirabargil 我同意你的观点,这完全是矫枉过正,但它比 python 标准 csv 库更适合初学者
  • 只要你鼓励一个人使用 pandas,你就会得到我的支持!
  • 作为一个老程序员,我不觉得 pandas 对初学者真的很友好。您确实可以在不了解 Python 及其容器的情况下使用它,因为它使用不同的容器,但它充满了初学者可能会跌倒的警告。我在这里发现很多用户认为它很神奇(Pandas 是什么……)的问题,并希望它能神奇地猜出他们想要的东西。在最后一部分,Pandas 只是一种额外的学习语言......
  • 我认为他的意思是只有这个特定的案例是初学者友好的......
【解决方案2】:

Pandas 在这里有点矫枉过正,而 csv 模块就足够了。只是你用错了方法:

with open('testcsv.csv', 'w', newline='') as f:
    w = csv.writer(f)
    w.writerow(['Features', 'Value'])    # first write a header line
    for f, v in my_dict.items():
        w.writerow((f,v))                # then one row per item in the dict

【讨论】:

    猜你喜欢
    • 2016-09-03
    • 2021-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-20
    • 2011-10-08
    • 2012-12-15
    相关资源
    最近更新 更多