python - 从坐标质心获取最近的 pandas df 坐标

标签 python pandas

我有一只 Pandas df

id     x_value  y_value
100     1       2
200     3       1
300     5       3
400     3       6
500     3.2     3.5
600     4.5     3

我想从这些坐标对中找到中间点,这样 它将返回距离中间点坐标最近的数据帧行。

def get_centroid(df):
    lat_mean = df['x_value'].mean()
    lat_mean = df['x_value'].iloc[(df['x_value']-lat_mean).abs().argsort([:1]].tolist()[0]
    long_mean = df['y_value'].mean()
    long_mean = df['y_value'].iloc[(df['y_value']-long_mean).abs().argsort()[:1]].tolist()[0]
    return([lat_mean,long_mean])

但这种方法是错误的,因为我不会得到精确的 df 对。

还有其他方法吗?

最佳答案

中心将只是您可以获得的 x 和 y 的平均值

df.mean()

x_value    3.283333
y_value    3.083333
dtype: float64

这会让您找到距均值最小平方距离的位置

df.sub(df.mean()).pow(2).sum(1).idxmin()

500

这让你争吵

df.loc[[df.sub(df.mean()).pow(2).sum(1).idxmin()]]

     x_value  y_value
id                   
500      3.2      3.5

设置

df = pd.DataFrame({
        'x_value': [1.0, 3.0, 5.0, 3.0, 3.2, 4.5],
        'y_value': [2.0, 1.0, 3.0, 6.0, 3.5, 3.0]
    }, pd.Index([100, 200, 300, 400, 500, 600], name='id')
)

关于python - 从坐标质心获取最近的 pandas df 坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45418353/

相关文章:

python - 从 pandas 单元格中删除 html 格式

python - 使用 tkFileDialog 的 Mac OS X 文件浏览器不起作用

python - 查找 csv 中给定长度大于特定阈值的所有唯一属性集

python - 如何让 Python 请求像我的浏览器一样跟随 URL

python - Pandas 在 to_sql 之后让空闲的 Postgres 连接保持打开状态?

pandas 要分组的数据框列表

python - 为什么我只能使用一次阅读器对象?

python - 使用solve_ivp进行同步事件检测

python - 特定月份的 Pandas、groupby 和求和

python - 在 Pandas DataFrame 列中有效地找到连续的条纹?