Вернуть df, содержащий точки в радиусе - python

джонбой

Есть несколько вопросов по этому поводу, но я застрял. У меня dfесть координаты различных точек разброса. Я хочу создать радиус вокруг одной из этих точек и вернуть точки, которые находятся в этом радиусе для каждого момента времени. Используя приведенное dfниже, я хочу вернуть df, содержащий все точки в радиусе вокруг Aдля каждого момента времени.

import pandas as pd

df = pd.DataFrame({
        'Time' : ['09:00:00.1','09:00:00.1','09:00:00.1','09:00:00.1','09:00:00.1','09:00:00.2','09:00:00.2','09:00:00.2','09:00:00.2','09:00:00.2'],                 
        'Label' : ['A','B','C','D','E','A','B','C','D','E'],                 
        'X' : [8,4,3,8,7,7,3,3,4,6],
        'Y' : [3,3,3,4,3,2,1,5,4,2],
        })

x_data = (df.groupby(['Time'])['X'].apply(list))
y_data = (df.groupby(['Time'])['Y'].apply(list))

AX_data = (df.loc[df['Label'] == 'A']['X'])
AY_data = (df.loc[df['Label'] == 'A']['Y'])

def countPoints(df, center_x, center_y, x, y, radius):

    '''
    Count number of points within radius for label A
    '''

    # Determine square distance
    square_dist = (center_x - x) ** 2 + (center_y - y) ** 2

    # Return df of rows within radius
df = df[square_dist <= radius ** 2].copy()

return df

df = countPoints(df, AX_data, AY_data, x_data, y_data, radius = 1) 

Предполагаемый результат:

         Time Label  X  Y
0  09:00:00.1     A  8  3
1  09:00:00.1     D  8  4
2  09:00:00.1     E  7  3
3  09:00:00.2     A  7  2
4  09:00:00.2     E  6  2
Энди Л.

Здесь я использую np.linalg.norm

def calc_dist(gp, a_label, r=1):
    dist_df = gp[['X', 'Y']] - gp.loc[gp.Label.eq(a_label), ['X', 'Y']].values  
    dist_arr = np.linalg.norm(dist_df, axis=1)

    return gp[dist_arr <= r]


df_A = df.groupby('Time').apply(calc_dist, a_label='A', r=1).reset_index(drop=True)

Out[2159]:
         Time Label  X  Y
0  09:00:00.1     A  8  3
1  09:00:00.1     D  8  4
2  09:00:00.1     E  7  3
3  09:00:00.2     A  7  2
4  09:00:00.2     E  6  2

Способ 2 :

df1 = df.where(df.Label.eq('A')).groupby(df.Time).apply(lambda x: x.ffill().bfill())
m = np.linalg.norm(df[['X', 'Y']] - df1[['X', 'Y']], axis=1) <= 1
df_A = df[m]

Out[2262]:
         Time Label  X  Y
0  09:00:00.1     A  8  3
3  09:00:00.1     D  8  4
4  09:00:00.1     E  7  3
5  09:00:00.2     A  7  2
9  09:00:00.2     E  6  2

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Python熊猫Split DF

来自分类Dev

python在pandas df中替换整个单词

来自分类Dev

熊猫-df.at功能错误-python

来自分类Dev

将df的子集传递给函数-Python

来自分类Dev

比较df熊猫中的行-Python

来自分类Dev

python pandas循环融化或旋转多个df

来自分类Dev

使用Python将pandas df导入SQLite

来自分类Dev

如何将输入放入python df?

来自分类Dev

在df python中动态创建列

来自分类Dev

Python df CSV如何删除默认行号

来自分类Dev

熊猫python:向df添加空白列

来自分类Dev

PYTHON:Pandas DF列为日期时间

来自分类Dev

未定义Python Pandas df

来自分类Dev

Python Pandas 通过键组合 2 df

来自分类Dev

Python Pandas 插入 DF 不起作用

来自分类Dev

Python:T 测试 ind 在 df 列上循环

来自分类Dev

将 pandas df 更改为 python dict

来自分类Dev

python pandas从日期时间提取年份:df ['year'] = df ['date']。year不起作用

来自分类Dev

在Python中,如何将字典转换为键与df.index值匹配的df列?

来自分类Dev

如果df2中的loc为True,则df1中的python和值

来自分类Dev

Python Pandas DF通过索引用其他DF的值替换NaN

来自分类Dev

是否可以在python的字符串中获取df ['homes'] + df ['flats']吗?

来自分类Dev

在Python中,如何将字典转换为键匹配df.index值的df列?

来自分类Dev

python pandas从日期时间提取年份:df ['year'] = df ['date']。year不起作用

来自分类Dev

Python Pandas 在一个基于另一个 df 的 df 中删除行

来自分类常见问题

在Azure Databricks中使用Python将DF写入SQL Server

来自分类Dev

使用python将新列从列表追加到df

来自分类Dev

Pandas Python:对df排序,同时按标签排除给定的行

来自分类Dev

Python Pandas:检查列表中的项目是否在df索引中

Related 相关文章

热门标签

归档