在字典中使用字典编写CSV文件

2024-05-20 16:05:42 发布

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

我有一个字典在一个字典,并想创建一个新的CSV文件使用字典内的第一个字典。在

我还希望有以下标题:原始的\u ID、Dist、方位、纬度和经度。在

我在字典里的字典是这样的(E060是第一个字典的键)

{'E060': {'ORIGINAL_ID': '001', 'DIST': '400.3049', 'BEARING': 
'23.0495', 'LATITUDE': 19.3459, 'LONGITUDE': 130.3094} , {'E061': 
{'ORIGINAL_ID': '002', 'DIST': '429.5968', 'BEARING': 
'22.0284', 'LATITUDE': 13.1948, 'LONGITUDE': 139.3492} , etc , etc 100s 
more}

最终目标是使用这些数据创建一个新的CSV文件,如下所示:

^{pr2}$

或者,如果更简单/不太复杂,我希望在另一列下包含“E060”作为另一个值,即

   First_ID  ORIGINAL_ID     DIST     BEARING   LATITUDE  LONGITUDE
    E060        001        400.3049  23.0495   19.3459   130.3094
    E061        002          etc .    etc .     etc .     etc 

编辑:请不要熊猫-它超出了我的范围。在


Tags: 文件csvid标题字典distetcoriginal
3条回答

首先将其更改为pandas dataframe,然后转换为csv。 在“E061”之前有一些额外的括号,请检查一下。在

import pandas as pd
df=pd.DataFrame(a)
df=df.T

df.to_csv('fineName.csv')

非熊猫版:

import csv

D = {'E060': {'ORIGINAL_ID': '001', 'DIST': '400.3049', 'BEARING': '23.0495',
              'LATITUDE': 19.3459, 'LONGITUDE': 130.3094},
     'E061': {'ORIGINAL_ID': '002', 'DIST': '429.5968', 'BEARING': '22.0284',
              'LATITUDE': 13.1948, 'LONGITUDE': 139.3492}}

# open the output file in binary mode with no newline translation.
with open('out.csv','w',newline='') as file:

    # Create a dictionary-per-row-based CSV writer, with columns listed.
    writer = csv.DictWriter(file,fieldnames='First_ID ORIGINAL_ID DIST BEARING LATITUDE LONGITUDE'.split())

    writer.writeheader()  # Add a header line to the CSV.

    # Iterate over the key/value pairs of the outer dictionary.
    for key,dict_value in D.items():

        # To keep from modifying the original value, make a copy.
        row = dict_value.copy()

        # Add the key value (e.g. E060) in the First_ID column.
        row['First_ID'] = key

        # Commit the inner dictionary values to a row of the CSV.
        writer.writerow(row)

在输出.csv公司名称:

^{pr2}$

使用pandas

df = pd.DataFrame(d).T

>>>
          BEARING      DIST LATITUDE LONGITUDE ORIGINAL_ID
E060  23.0495  400.3049  19.3459   130.309         001
E061  22.0284  429.5968  13.1948   139.349         002

df.to_csv('your.csv')

如果要将索引重命名为列,请执行以下操作:

^{pr2}$

相关问题 更多 >