gpt4 book ai didi

python - 检查列值是否在范围内

转载 作者:行者123 更新时间:2023-11-28 21:33:48 24 4
gpt4 key购买 nike

这是我的数据框中的内容-

RecordType    Latitude    Longitude    Name
L 28.2N 70W Jon
L 34.3N 56W Dan
L 54.2N 72W Rachel

注意:dtype所有列的总和是 object .

现在,在我的最终数据框中,我只想包含纬度和经度落在特定范围内的那些行(例如 24 < Latitude < 3079 < Longitude < 87 )。

我的想法是apply Latitude 中所有值的函数和Longitude首先获取的列 float值如 28.2等等,然后比较这些值,看看它们是否落入我的范围内。所以我写了以下内容-

def numbers(value):
return float(value[:-1])

result[u'Latitude'] = result[u'Latitude'].apply(numbers)
result[u'Longitude'] = result[u'Longitude'].apply(numbers)

但我收到以下警告 -

Warning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy

由于我是 Pandas 新手,所以我很难理解这一点。最好的方法是什么?

最佳答案

如果您不想修改df,我建议摆脱apply并将其矢量化。一种选择是使用eval

u = df.assign(Latitude=df['Latitude'].str[:-1].astype(float))
u['Longitude'] = df['Longitude'].str[:-1].astype(float)

df[u.eval("24 < Latitude < 30 and 79 < Longitude < 87")]

使用Series. Between您有更多选择:

u = df['Latitude'].str[:-1].astype(float))
v = df['Longitude'].str[:-1].astype(float))

df[u.between(24, 30, inclusive=False) & v.between(79, 87, inclusive=False)]

关于python - 检查列值是否在范围内,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54271008/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com