python字典到csv,其中每个键在单独的行中以及单独的列中的值

时间:2016-07-26 20:56:24

标签: python dictionary export-to-csv

我在尝试将字典输出到CSV文件时遇到问题。我有一个包含时间日期和值的键的词典,与字符串格式的那些日期有关的公司。我尝试通过网站查找相同的问题,但它并没有真正帮助我的情况。我尝试了以下代码并设法获得第一行中的键,第二列中的值,但这不是我想要的。

import csv
with open('dict1.csv','w') as f:
    w = csv.writer(f,delimiter=',')
    for key,values in sorted(a.items()):
        w.writerow([key,values])

但是这给了我一个以下格式的CSV文件:

2009/01/02  ['AA' 'BB' 'AAPL'] etc
2009/01/03  ['AA' 'CC' 'DD' 'FF']

因此我只有两列。但我想:

2009/01/02  'AA' 'BB' 'AAPL'
2009/01/02  'AA' 'CC' 'DD'  'FF'

分别为第一行4个独立列和第二行5个 我甚至试过

for dates in sorted(a):
    w.writerow([date] + my_dict[date] )

但这让我错误地说+'timestamp'和'str'的操作数类型不受支持。

任何帮助将不胜感激。感谢

3 个答案:

答案 0 :(得分:2)

此行将键(日期)放在键变量中,将值作为列表放入值中。因此,价值观确实包含类似[' AA' ' BB' ' AAPL'。]

for key,values in sorted(a.items()):

接下来,你要告诉作家"写一行有两个元素:第一个是键,第二个是值中的任何一个" (这是一个列表,所以它只是转换为字符串表示和输出)。

    w.writerow([key,values])

所以[key,values]看起来像这样:

[2009/01/02, ['AA','BB','AAPL']]
 ^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^
 the key     this whole thing
             is the single value

我认为,您想要的是创建一个包含密钥和字符串的列表,而不是包含密钥和字符串列表的列表。您可以使用额外的值扩展列表,如下所示:

    the_row = [key]  # Create the initial row with just key
    the_row.extend(values)  # Add the values, one by one, to the row
    w.writerow(the_row)  # Write the full row

list.extend(L)确实:通过附加给定列表中的所有项来扩展列表。

答案 1 :(得分:1)

很抱歉,如果我读错了,你使用的是python pandas吗?

  

“我有一个字典,其中包含作为关键字的pandas时间日期和值,>与那些日期为字符串格式的公司。”

在这种情况下,这样的事情可能会起作用

import pandas as pd
df = pd.DataFrame(mydict)
df = df.transpose()
df.to_csv('dict1.csv',encoding='utf-8')

to_csv方法默认使用','作为分隔符,您可以根据需要进行更改。

答案 2 :(得分:0)

你可能需要这样的东西:

for key,values in sorted(a.items()):
    w.writerow(str(key) + "," + ","join(values))

",".join(values)会将值列表拆分为以逗号分隔的字符串。我假设您要将逗号分隔,因为您正在编写csv文件,即使在您的示例中,列也是以制表符分隔的。