Python 使用字典中的字典编写CSV文件

Python 使用字典中的字典编写CSV文件,python,csv,dictionary,writing,Python,Csv,Dictionary,Writing,我在字典中有一个字典,希望使用第一个字典中的字典创建一个新的CSV文件 我还希望有以下标题:原始ID、距离、方位、纬度和经度 我在字典里的字典是这样的(E060是第一本字典的键) 最终目标是使用此数据创建一个新的CSV文件,如下所示: ORIGINAL_ID DIST BEARING LATITUDE LONGITUDE 001 400.3049 23.0495 19.3459 130.3094 002 etc . etc

我在字典中有一个字典,希望使用第一个字典中的字典创建一个新的CSV文件

我还希望有以下标题:原始ID、距离、方位、纬度和经度

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

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

ORIGINAL_ID   DIST     BEARING   LATITUDE  LONGITUDE
  001        400.3049  23.0495   19.3459   130.3094
  002          etc .    etc .     etc .     etc 
或者,如果更简单/不太复杂,我希望将“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 

编辑:请不要熊猫-它超出了我的领域

使用
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')
如果要将索引重命名为列,请执行以下操作:

df = df.rename_axis('FIRST_ID').reset_index()

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

首先将其更改为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)
out.csv:

First_ID,ORIGINAL_ID,DIST,BEARING,LATITUDE,LONGITUDE
E060,001,400.3049,23.0495,19.3459,130.3094
E061,002,429.5968,22.0284,13.1948,139.3492

谢谢,我只是想澄清一下,代码:w=csv.DictWriter(f,fieldnames='First\u ID ORIGINAL\u ID DIST BEARING LATITUDE LONGITUDE'.split())实际上是做什么的?将词典写入CSV。由于字典是无序的,
fieldnames
列出了字典键作为一行写入的顺序
.split()
创建一个空白字符串中断列表。它比
['aaa'、'bbb'、'ccc'、…]打字快。
。再次干杯,最后一个问题;这段代码的作用是什么?对于k,v in D.items():row=v.copy()row['First_ID']=k w.writerow(row),再次感谢您,您帮了大忙。@James对代码进行了注释。记住,谢谢==投票:^)
First_ID,ORIGINAL_ID,DIST,BEARING,LATITUDE,LONGITUDE
E060,001,400.3049,23.0495,19.3459,130.3094
E061,002,429.5968,22.0284,13.1948,139.3492