Python 使用字典中的字典编写CSV文件
我在字典中有一个字典,希望使用第一个字典中的字典创建一个新的CSV文件 我还希望有以下标题:原始ID、距离、方位、纬度和经度 我在字典里的字典是这样的(E060是第一本字典的键) 最终目标是使用此数据创建一个新的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
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