使用单个值和列表的不均匀字典创建CSV输出



我正在使用python并在google colab上运行我的示例。我是csv写作的新手。我想像下面这样用csv格式写出来。期望输出示例我遇到的问题是我的"添加"one_answers"注册"列表。当我运行示例代码时,我得到以下结果。我的输出我应该怎么做才能得到我想要的输出?下面是我的尝试。如果有另一个帖子有类似的情况,你可以链接它,因为我已经试过搜索,找不到和我有同样问题的人。

d = [{'local_date': '12/16/2022', 'local_time': '12:00', 'add':[2, 8, 22, 17], 'reg':[1001, 1002, 1003, 1004] }]
fields = ['local_date', 'local_time', 'add', 'reg']
with open("tester.csv", "w") as outfile:
writer = csv.DictWriter(outfile, fieldnames = fields)
writer.writeheader()
writer.writerows(d)

using csv

import csv
d = [{'local_date': '12/16/2022', 'local_time': '12:00', 'add':[2, 8, 22, 17], 'reg':[1001, 1002, 1003, 1004]}]
fields = ['local_date', 'local_time', 'add', 'reg']
# we parse the d list to get the create new row with each add, reg value
data = [{**dat, 'add':add, 'reg':reg} for dat in d for add, reg in zip(dat['add'], dat['reg'])]
with open("tester.csv", "w") as outfile:
writer = csv.DictWriter(outfile, fieldnames = fields)
writer.writeheader()
writer.writerows(data)
使用熊猫

import pandas as pd
d = [{'local_date': '12/16/2022', 'local_time': '12:00', 'add':[2, 8, 22, 17], 'reg':[1001, 1002, 1003, 1004]}]
df = pd.DataFrame(d).explode(['add', 'reg'])
df.to_csv('tester.csv', index=False)

其中一个问题是您将列表与其他类型的对象组合在一起。

你可以把其他对象作为列表,如果键在字典中,变量'fields'就不需要了。

这是我的尝试:

d = {'local_date': ['12/16/2022','12/16/2022','12/16/2022','12/16/2022'], 'local_time': ['12:00','12:00','12:00','12:00'], 'add':[2, 8, 22, 17], 'reg':[1001, 1002, 1003, 1004] }
with open("tester.csv", "w") as outfile:
writer = csv.writer(outfile)
writer.writerow(d.keys())
writer.writerows(zip(*d.values()))

同样,如果你对库没有限制,可以试试pandas(它会让你的生活更轻松)。

关于CSV中列表的更多信息:将列表字典写入CSV文件

最新更新