将字典写入csv或xlsx python

时间:2018-02-14 16:15:28

标签: python pandas csv dictionary

我有一个名为master的字典,其格式为。

{
  'Company': {
             'App': 4,  
             'App2': 5,  
             'App3': 82,  
          etc}   
  'Company2': {
             'App': 3,  
             'App2': 1,  
             'App3': 48,  
          etc}   
  'Company3' etc

我尝试了几个不同的答案:
with open('test.csv', 'wb') as f: writer = csv.writer(f) for row in myDict.iteritems(): writer.writerow(row)
与此相关的其他问题但没有给出我正在寻找的输出。 需要将csv或xslx中的输出格式化为
Companys作为从B列开始的列标题和应用程序从第2行开始沿着A列向下行,每个应用程序的计数填入每个关联公司的列下的行中。
只是看起来没有正确分离列的输出或没有正确包含计数。

master = {} business_list = ['Company1','Company2','Company3'etc] for business in business_list: selected_business_apps = {} curr_business_apps = business_map.get(business) freqs = Counter (curr_business_apps) for key, val in freqs.items(): if key in app_map.keys(): selected_business_apps[key] = val master[business] = selected_business_apps

1 个答案:

答案 0 :(得分:0)

最简单的方法是使用内置csvdefaultdict功能的Python。它的工作原理是首先根据应用程序而不是公司创建新的字典词典。然后使用csv.DictWriter()获取字典并将其转换为CSV格式的输出行:

from collections import defaultdict
import csv

master = {
    'Company': {'App': 4, 'App2': 5, 'App3': 82},
    'Company2': {'App': 3, 'App2': 1, 'App3': 48}}

all_apps = defaultdict(dict)

# Create a dictionary in terms of apps e.g. {'App' : {'Company' : 4, 'Company2' : 3}}
for company, apps in master.items():
    for app, count in apps.items():
        all_apps[app][company] = count

with open('output.csv', 'wb') as f_output:
    csv_output = csv.DictWriter(f_output, fieldnames=['App'] + sorted(master.keys()))
    csv_output.writeheader()

    for app, row in sorted(all_apps.items()):
        row.update({'App': app})
        csv_output.writerow(row)

这将为您提供一个output.csv文件,其中包含:

App,Company,Company2
App,4,3
App2,5,1
App3,82,48