我正在尝试将一些数据从CSV转换为JSON,准备作为文档加载到MongoDB中。我已经浏览了数百个Q& A,并提出了下面的代码,但有一个问题与方括号被添加。
我需要的结构如下,适用于所有英国邮政编码:
[
{
"Postcode":"BS273EE",
"Location":
{
"coordinates":[
"-2.783927",
"51.275287"]
,
"type":"Point"
}
]
}]
不过,我得到了以下内容-只是location元素中的方括号,用于一个dict的列表:
[
{
"Postcode":"BS273EE",
"Location":[
{
"coordinates":[
"-2.783927",
"51.275287"]
,
"type":"Point"
}
]
}]
我使用的代码是:
url = 'National_Statistics_Postcode_Lookup_UK_Coordinates.csv'
fields= ['Postcode 1', 'Longitude','Latitude']
df = pd.read_csv(url, skipinitialspace=True,usecols=fields,dtype=str)
df['type'] = 'Point'
df['coordinates'] = df[["Longitude","Latitude"]].values.tolist()
df1 = df[['Postcode','type','coordinates']]
df2 = (df1.head(5).groupby(['Postcode']).apply(lambda x: x[{'type','coordinates'}].to_dict('records')).reset_index().rename(columns={0:'Location'}).to_json(orient='records'))
print(df2)#testing output
原始的CSV数据结构只是:
Postcode, Longitude, Latitude
XX56XX -95.4343 55.5335
我发现将to_dict更改为'index'确实满足了我的需要,但随后单词'Location'被替换为100,000个左右邮政编码中每个邮政编码的迭代数字。我需要的是“位置”这个词,而不是数字“0”,“1”等。因此,将to_dict('records')
更改为to_dict('index')
并不是正确的答案。
1条答案
按热度按时间628mspwn1#
转换为记录后,添加
[0]
以获得第一个元素:输出: