我在尝试将字典输出到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'的操作数类型不受支持。
任何帮助将不胜感激。感谢
答案 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文件,即使在您的示例中,列也是以制表符分隔的。