2017-06-30 13 views
2
df[['gc_lat', 'gc_lng']] = df[['gc_lat', 'gc_lng']].apply(pd.to_numeric, errors='ignore') 
df_realty[['lat', 'lng']] = df_realty[['lat', 'lng']].apply(pd.to_numeric, errors='ignore') 
for index, row in df.iterrows(): 
     gc_lat = float(df.get_value(index,'gc_lat')) 
     gc_lng = float(df.get_value(index, 'gc_lng')) 
     latmax = gc_lat + 1/110.574*radius_km 
     latmin = gc_lat - 1/110.574*radius_km 
     longmax = gc_lng + 1/111.320*radius_km*cos(df.get_value(index,'gc_lat')) 
     longmin = gc_lng - 1/111.320*radius_km*cos(df.get_value(index,'gc_lat')) 
     print(latmax, latmin, longmax, longmin) 
     print (gc_lat) 
     print (gc_lng) 
     print (df_realty.shape) 
     subset = df_realty.loc[(df_realty['lat']<latmax) & (df_realty['lat']>latmin) & (df_realty['lng']>longmin) & (df_realty['lng'] <longmax)] 
     print (subset.shape) 
     print ('subset selected!') 

プリントパンダ比較-山車条件が

59.12412758664786 59.03369041335215 37.88659685779323 37.960157142206775 
59.078909 
37.923377 
(290584, 3) 
(0, 3) 
subset selected! 

を働くことはありませんdf.locだから私はサブセットにデータフレームを分割しようとしていますが、私はdf.locに入れた状態では機能しません!

df_realtyのデータはOKで、すでにテスト済みです。

私はいくつかのタイプがキャスト明示的なする必要があるように思えるが、私はすでに1(pd.to_numeric)

任意の提案を行ってきましたか?ソリューション

問題が見つかり

+1

'longmax'は' longmin'より小さくなります。私はどこにエラーがあるかは分かりません。 –

+0

df_realtyのサンプルを投稿できますか?私は 'groupby()'が行く方法かもしれないと思います。 – NickBraunagel

+0

サブセットをdw_realty.query( "lat <@latmax&lat> @latmin&lng> @longmin $ lng <@longmax")としてみてください。そうでなければ、サブセットをピボットテーブルに変換しようとする - >サブセット= pd.pivot_table(df_realty)https://pandas.pydata.org/pandas-docs/stable/generated/pandas.pivot_table.html – 2Obe

答えて

1

は、COSはときどき負の浮動小数点数を返すためlongmaxが時々longminよりも小さくなったということでした。

cosinusの前にabs()を置くと、問題が解決しました