处理pandas数据帧

时间:2016-11-22 16:37:04

标签: python pandas

我有以下格式的pandas数据框:

 Latitude   Longitude
-31.563910  147.154312
-33.718234  150.363181
-33.727111  150.371124

为了进一步处理,我需要将其转换为如下格式:

示例输出:

[
  {lat: -31.563910, lng: 147.154312},
  {lat: -33.718234, lng: 150.363181},
  {lat: -33.727111, lng: 150.371124}
]

我尝试了这段代码,但它不起作用:

list1 = []
for index,row in dfLatLong.iterrows():
     list1.append("{lat:" + row['StartLat'] + ", lng:" + row['StartLong'] + "},")

2 个答案:

答案 0 :(得分:2)

您可以使用参数orient='records'致电to_dict

In [40]:
df.to_dict(orient='records')

Out[40]:
[{'Latitude': -31.563909999999996, 'Longitude': 147.154312},
 {'Latitude': -33.718234000000002, 'Longitude': 150.363181},
 {'Latitude': -33.727111000000001, 'Longitude': 150.37112400000001}]

你可以rename在上面的col之前得到你想要的名字:

In [42]:

df.rename(columns={'Latitude':'lat', 'Longitude':'lng'}).to_dict(orient='records')

Out[42]:
[{'lat': -31.563909999999996, 'lng': 147.154312},
 {'lat': -33.718234000000002, 'lng': 150.363181},
 {'lat': -33.727111000000001, 'lng': 150.37112400000001}]

修改

你需要走过df以获得所需的输出

In [59]:
s='['
for i, row in df.iterrows():
   s += '{lat:' + str(row['Latitude']) + ',' + 'lng:' + str(row['Longitude']) + '},' + '\n'
​
s += ']'
s

Out[59]:
'[{lat:-31.56391,lng:147.154312},\n{lat:-33.718234,lng:150.363181},\n{lat:-33.727111,lng:150.371124},\n]'

答案 1 :(得分:0)

df.rename(columns={'Latitude':'lat', 'Longitude':'lng'}).to_json(orient='records').replace('\"', '')