Python dict以列格式转换为csv
我有下面的格言Python dict以列格式转换为csv,python,csv,Python,Csv,我有下面的格言 items = {'people': ['Peter', 'Danny'], 'numbers': [1,2,3,4], 'cities': ['London']} 我想按列将dict写入CSV文件,即采用以下格式: people,numbers,cities Peter,1,London Danny,2, ,3, ,4, 我当前的方法不起作用,因为我按行获取CSV文件: people,Peter,Danny numbers,1,2,3,4 cities,
items = {'people': ['Peter', 'Danny'], 'numbers': [1,2,3,4], 'cities': ['London']}
我想按列将dict写入CSV文件,即采用以下格式:
people,numbers,cities
Peter,1,London
Danny,2,
,3,
,4,
我当前的方法不起作用,因为我按行获取CSV文件:
people,Peter,Danny
numbers,1,2,3,4
cities,London
我该怎么做呢?你可以使用
itertools.zip\u longest
(itertools.izip\u longest
在Python2中):
输出:
people,numbers,cities
Peter,1,London
Danny,2,
,3,
,4,
一种简单的方法是计算字典中最长列表的长度,然后将
'
附加到所有列表中,使它们具有此长度
num_rows = max((len(x) for x in items.values()))
items = {k: items[k] + [''] * (num_rows - len(items[k])) for k in items}
print(items)
#{'cities': ['London', '', '', ''],
# 'numbers': [1, 2, 3, 4],
# 'people': ['Peter', 'Danny', '', '']}
然后使用csv
模块将dict
写入csv
或者,您可以从字典中构建一个数据框
:
import pandas as pd
df = pd.DataFrame(items)
print(df)
# cities numbers people
#0 London 1 Peter
#1 2 Danny
#2 3
#3 4
现在,您可以使用
to_csv()
方法将其写入文件。或者您可以使用Pandas,这只需要两行代码
import pandas as pd
pd.DataFrame(items).fillna('').to_csv('file_path')
如果您不想依赖像pandas这样的外部依赖项,那么可以使用纯python中的
join
方法str
对象快速实现这一点
items={'people':['Peter','Danny'],
“数字”:[1,2,3,4],
“城市”:[“伦敦”]}
def至_csv(项目):
#列名
header=',.join(列表(items.keys()))
#建筑线
行=列表()
max_len=max([len(items[key]),用于输入items.keys())
对于范围内的i(最大值):
行。追加(
“,”加入(
[str(items[key][i])用于输入项。key()
如果i
产出:
people,numbers,cities
Peter,1,London
Danny,2,
,3,
,4,
你可以看看熊猫包,它有很多方法可以做到这一点。
people,numbers,cities
Peter,1,London
Danny,2,
,3,
,4,