首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如果坐标对不在列表中,则从数据框中删除

如果坐标对不在列表中,则从数据框中删除
EN

Stack Overflow用户
提问于 2019-11-08 12:21:34
回答 3查看 85关注 0票数 1

我有my_dataframe

代码语言:javascript
运行
复制
    data    | lat       | lon |   
------------+-----------------+--
  10        | 1.0       | 3.0
  11        | 2.0       | 4.0
  21        | 9.0       | 3.0

我还有一个accepted_coordinates = [(1.0, 3.0), (2.0, 4.0)]的列表。我需要从数据帧中删除经度/经度不在accepted_coordinates中的所有行,因此最终的答案应该是一个数据帧,如下所示:

代码语言:javascript
运行
复制
    data    | lat       | lon |   
------------+-----------------+--
  10        | 1.0       | 3.0
  11        | 2.0       | 4.0

我用groupbyisin尝试了一些东西,但不知道怎么做。

注意:如果两个坐标都在accepted_coordinates中,但顺序错误,则应该删除该行。也就是说,如果有一行(1.0, 4.0)的余弦

EN

回答 3

Stack Overflow用户

发布于 2019-11-08 12:37:27

我会将accepted_coordinates转换为数据帧:

代码语言:javascript
运行
复制
acc_coor = pd.DataFrame(accepted_coordinates, columns=['lat', 'lon'])

和带有my_dataframemerge

代码语言:javascript
运行
复制
res = my_dataframe.merge(acc_coor, on=['lat', 'lon'], how='inner')

res
   data  lat  lon
0    10  1.0  3.0
1    11  2.0  4.0
票数 2
EN

Stack Overflow用户

发布于 2019-11-08 12:34:17

此解决方案符合您帖子中的编辑。

代码语言:javascript
运行
复制
import pandas as pd

df = pd.DataFrame(data=[(10, 1.0, 3.0), (11, 2.0, 4.0), (21, 9.0, 3.0)], columns=['data', 'lat', 'lon'])

valid_lat, valid_lon = zip(*[(1.0, 3.0), (2.0, 4.0)])
valid_lat = set(valid_lat)
valid_lon = set(valid_lon)

df = df[df['lat'].isin(valid_lat) & df['lon'].isin(valid_lon)]
票数 1
EN

Stack Overflow用户

发布于 2019-11-08 13:05:49

这可以通过以下方式实现:

代码语言:javascript
运行
复制
    def get_lat_lon(row):
        # For creating new column
        return (row['lat'], row['lon'])

    df = pd.DataFrame(columns=['data', 'lat', 'lon'])

    df['data'] = [10, 12, 15, 20]
    df['lat'] = [1.0, 2.0, 9.0, 12.0]
    df['lon'] = [3.0, 4.0, 3.0, 2.0]

    accepted_coordinates = [(1.0, 3.0), (12.0, 2.0)]

    df['lat_lon'] = df.apply(get_lat_lon, axis=1)
    modified_df = df[df['lat_lon'].isin(accepted_coordinates)].drop(columns=['lat_lon'])
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58760327

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档