将OrderedDict对象保存到csv文件

2024-06-06 16:33:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下对象,它是我想要导出到csv的OrderedICT

OrderedDict([('AGG', 0.09888),
             ('BWX', 0.04886),
             ('DBC', 0.06046),
             ('EMB', 0.05899),
             ('HYG', 0.07954),
             ('IEF', 0.09933),
             ('LQD', 0.07909),
             ('MBB', 0.10442),
             ('MUB', 0.09408),
             ('PCY', 0.05172),
             ('RING', 0.0026),
             ('SHM', 0.03761),
             ('SHY', 0.11148),
             ('SPY', 0.07296)])

我正在使用.to_csv命令,但错误消息显示:“'collections.OrderedDict'对象没有'to_csv'属性”

我需要将其转换为df或np数组吗

谢谢


Tags: csvto对象aggdbcordereddictorderedictemb
3条回答

解决方案

我的第一个选择是使用pandas,因为从用户实现的角度来看它很简单

import pandas as pd
pd.DataFrame(d.items()).to_csv('test.csv', index=False)

替代溶液

但是,如果出于某种原因您不想使用pandas,那么您可以使用以下实现

Note: I am using the OrderedDict (d) from the Dummy Data section below.

创建CSV文件:test.csv

# Create lines
CSV_FILENAME = 'test.csv'
lines = [','.join(list(map(str,items))) for items in d.items()]
# Create csv file
with open(CSV_FILENAME, 'w') as f:
    f.write('\n'.join(lines))

检查test.csv

中的文件输出
# Check if csv file was properly created    
with open(CSV_FILENAME, 'r') as f:
    s = f.read()

print(s)

输出

# test.csv

AGG,0.09888
BWX,0.04886
DBC,0.06046
EMB,0.05899
HYG,0.07954
IEF,0.09933
LQD,0.07909
MBB,0.10442
MUB,0.09408
PCY,0.05172
RING,0.0026
SHM,0.03761
SHY,0.11148
SPY,0.07296

虚拟数据

from collections import OrderedDict

d = OrderedDict([('AGG', 0.09888),
             ('BWX', 0.04886),
             ('DBC', 0.06046),
             ('EMB', 0.05899),
             ('HYG', 0.07954),
             ('IEF', 0.09933),
             ('LQD', 0.07909),
             ('MBB', 0.10442),
             ('MUB', 0.09408),
             ('PCY', 0.05172),
             ('RING', 0.0026),
             ('SHM', 0.03761),
             ('SHY', 0.11148),
             ('SPY', 0.07296)])

用熊猫代替

d = OrderedDict([('AGG', 0.09888),
             ('BWX', 0.04886),
             ('DBC', 0.06046),
             ('EMB', 0.05899),
             ('HYG', 0.07954),
             ('IEF', 0.09933),
             ('LQD', 0.07909),
             ('MBB', 0.10442),
             ('MUB', 0.09408),
             ('PCY', 0.05172),
             ('RING', 0.0026),
             ('SHM', 0.03761),
             ('SHY', 0.11148),
             ('SPY', 0.07296)])
pd.DataFrame.from_dict(d, orient="index").to_csv("data.csv")

您可以手动写入CSV文件:

with open('output.csv', 'w') as f:
    for key,val in odict.items():
        f.write('{},{}\n'.format(key, val))

相关问题 更多 >