this questionに記載されているのと同様の区間比較を10000 <= number <= 30000
として実行しようとしていますが、データフレームでそれを実行しようとしています。たとえば、私のサンプルデータは以下の通りです。私は、緯度が私の定義済みの座標の1以内のすべての行を取得したいと思います。パンダのデータフレームの区間比較
import pandas as pd
import numpy as np
df = pd.DataFrame([[5,7, 'wolf'],
[5,6,'cow'],
[8, 2, 'rabbit'],
[5, 3, 'rabbit'],
[3, 2, 'cow'],
[7, 5, 'rabbit']],
columns = ['lat', 'long', 'type'])
coords = [4,7]
viewShort = df[(coords[0] - 1) <= df['lat'] <= (coords[0] + 1)]
残念ながら、私はそれを書くときにValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
を取得します。
私はこの代わりに
viewLong = df[((coords[0] - 1) <= df['lat']) & (df['lat'] <= (coords[0] + 1))]
ようにそれを書くことができることを認識し、私はこれらの事の多くを書かなければならないので、私はそれをもう少しコンパクトにしようとしていました。私はviewShort
の例で何が間違っていますか?それとも、これはパンダでは不可能なのですか?そして、それを長い道程で書く必要がありますか?
ありがとうございました!
追記:正しいviewShort
データフレームは、4つの行を持っている必要があります。
[5,7,'wolf'],
[5,6,'cow'],
[5,3,'rabbit'],
[3,2,'cow']
大変ありがとうございます。 .between()は私の目的のために十分にきれいだと思う。 – seth127