使用元组过滤数据框
Filtering dataframe with tuples
我有一个看起来像这样的数据框,它以经度作为元组的第一个元素,以纬度作为第二个元素:
[1]: https://i.stack.imgur.com/41zpN.jpg
如何将数据框过滤为 select 只有经度在范围 (19.07,19.82) 和纬度在范围 (-17.09,-20.37) 内的行。
谢谢!
由于您没有说明要过滤哪一列,这里是我的解决方案,仅针对列 1
:
在这些范围内获取 (longitude, latitude)
对
import pandas as pd
df = pd.DataFrame({'0': [(133.79, -72.91812133789062), (133.50, -72.95),
(133.22, -72.98)], '1': [(133.56, -72.97),
(133.28, -73.006), (19.59, -18.04)]})
lat_lower, lat_upper = 19.07, 19.82
long_lower, long_upper = -20.37, -17.09
col = df['1']
filtered = df.loc[(lat_lower < col.str[0]) & (col.str[0] < lat_upper) & (long_lower < col.str[1]) & (col.str[1] < long_upper)]
print(filtered)
输出为:
0 1
(133.22, -72.98) (19.59, -18.04)
如您所见,第 1
列只有您请求范围内的值,但 0
列没有。
如果您想要所有列都在这些范围内的行,那么您应该对所有其他列重复相同的操作。
我有一个看起来像这样的数据框,它以经度作为元组的第一个元素,以纬度作为第二个元素: [1]: https://i.stack.imgur.com/41zpN.jpg 如何将数据框过滤为 select 只有经度在范围 (19.07,19.82) 和纬度在范围 (-17.09,-20.37) 内的行。 谢谢!
由于您没有说明要过滤哪一列,这里是我的解决方案,仅针对列 1
:
(longitude, latitude)
对
import pandas as pd
df = pd.DataFrame({'0': [(133.79, -72.91812133789062), (133.50, -72.95),
(133.22, -72.98)], '1': [(133.56, -72.97),
(133.28, -73.006), (19.59, -18.04)]})
lat_lower, lat_upper = 19.07, 19.82
long_lower, long_upper = -20.37, -17.09
col = df['1']
filtered = df.loc[(lat_lower < col.str[0]) & (col.str[0] < lat_upper) & (long_lower < col.str[1]) & (col.str[1] < long_upper)]
print(filtered)
输出为:
0 1
(133.22, -72.98) (19.59, -18.04)
如您所见,第 1
列只有您请求范围内的值,但 0
列没有。
如果您想要所有列都在这些范围内的行,那么您应该对所有其他列重复相同的操作。