2017-11-29 20 views
0

私はPandasで簡単なデータフレームを作成しようとしています。私は配列に格納されているすべてのアドレス間の距離行列を取得するPythonスクリプトを使用しています。私は値の配列を作成するのに成功していますが、DataFrameには配列の配列が必要です。データフレームを作成するためにgoogle apiから配列を変更する

import googlemaps 
import pandas as pd 

gmaps = googlemaps.Client(key='MYKEY') 
addys = ['New York, NY','Boston, MA'] 
addyMeters = [] 

for origin in addys: 
    for dest in addys: 
     directions = gmaps.distance_matrix(origin , dest) 
     meters = directions['rows'][0]['elements'][0]['distance']['value'] 
     addyMeters.append(meters) 
print(addyMeters) #Result: [0, 349157, 346651, 0] 


df = pd.DataFrame(addyMeters, columns=addys, index=addys) 
print(df) 

addyMetersは私に

[0, 349157, 346651, 0] 

を与えるしかし、私は、データフレームのために必要なのです。

[[0, 349157],[[346651, 0]] 

希望に満ちた最終結果の走行距離テーブル:

enter image description here

答えて

1

2つの可能性。 1つは2Dリストを作成する方法、もう1つは1次元配列を作成して再構成する方法です。

オプション1
2Dリスト -

addyMeters = [] 

for origin in addys: 
    addyMeters.append([]) 
    for dest in addys: 
     ... 
     addyMeters[-1].append(meters) 

df = pd.DataFrame(addyMeters, columns=addys, index=addys) 

オプション2
初期化および1Dアレイを再構築。あなたの結果は正方形になるのでこれは可能です。

x = np.array(addyMeters).reshape(-1, int(len(addyMeters) ** .5)) 
df = pd.DataFrame(x, columns=addys, index=addys) 

データが5 X 5の形状をしている場合、len(addyMeters)25を与えます。

関連する問題