0
我想做一个区间比较类似于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
数据帧应该有四行:
[5,7,'wolf'],
[5,6,'cow'],
[5,3,'rabbit'],
[3,2,'cow']
太好了,谢谢。我认为.between()对于我的目的来说足够干净。 – seth127