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

时间:2018-10-31 01:58:48

标签: python csv dictionary writing

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

我还希望具有以下标头:Original_ID,Dist,Bearing,Latitude和Longitude。

我的字典中的字典看起来像这样,(以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文件,如下所示:

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 

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

3 个答案:

答案 0 :(得分:0)

使用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

答案 1 :(得分:0)

首先将其更改为pandas数据框,然后转换为csv。 还有一些额外的括号,例如'E061'之前的括号,请检查一下。

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

df.to_csv('fineName.csv')

答案 2 :(得分:0)

非熊猫版本:

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