首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >到csv文件的两点欧几里德距离

到csv文件的两点欧几里德距离
EN

Stack Overflow用户
提问于 2021-03-02 06:21:04
回答 1查看 91关注 0票数 0

我想计算两个点之间的距离并标记它们。问题是代码不能在超过1行的代码上工作。当有1行时,程序会显示我想要的结果:

当有超过1行时,这是一个错误:"cannot convert the series to“

这是我的代码:

代码语言:javascript
运行
复制
data = pd.read_csv (r'C:\Users\DSAij\Documents\Projekt.csv') 
data.head()

choices_1 = ['short','medium','long']

if not ((data['x_start'] < data['x_end']) & (data['y_start'] < data['y_end'])).empty:
    conditions_1 = [
        ((math.sqrt((((data['x_end']) - (data['x_start']))**2) + ((data['y_end'])-(data['y_start']))**2)) < 5), 
        ((math.sqrt((((data['x_end']) - (data['x_start']))**2) + ((data['y_end'])-(data['y_start']))**2)) >= 5 and 
        (math.sqrt((((data['x_end']) - (data['x_start']))**2) + ((data['y_end'])-(data['y_start']))**2)) < 10),
        ((math.sqrt((((data['x_end']) - (data['x_start']))**2) + ((data['y_end'])-(data['y_start']))**2)) > 10)]
    
    data['Pass'] = np.select(conditions_1, choices_1)

  #  if not ((data['x_start'] < data['x_end']) & (data['y_start'] > data['y_end'])).empty:
   #     conditions_2 = [
    #        ((math.sqrt((((data['x_end']) - (data['x_start']))**2) + ((data['y_start'])-(data['y_end']))**2)) < 5), 
     #       ((math.sqrt((((data['x_end']) - (data['x_start']))**2) + ((data['y_start'])-(data['y_end']))**2)) >= 5 and 
      #      (math.sqrt((((data['x_end']) - (data['x_start']))**2) + ((data['y_start'])-(data['y_end']))**2)) < 10),
       #     ((math.sqrt((((data['x_end']) - (data['x_start']))**2) + ((data['y_start'])-(data['y_end']))**2)) > 10)]

#        data['Pass'] = np.select(conditions_2, choices_1)
        
 #   if not ((data['x_start'] > data['x_end']) & (data['y_start'] < data['y_end'])).empty:
  #      conditions_3 = [
   #         ((math.sqrt((((data['x_start']) - (data['x_end']))**2) + ((data['y_end'])-(data['y_start']))**2)) < 5), 
    #        ((math.sqrt((((data['x_start']) - (data['x_end']))**2) + ((data['y_end'])-(data['y_start']))**2)) >= 5 and 
     #       (math.sqrt((((data['x_start']) - (data['x_end']))**2) + ((data['y_end'])-(data['y_start']))**2)) < 10),
      #      ((math.sqrt((((data['x_start']) - (data['x_end']))**2) + ((data['y_end'])-(data['y_start']))**2)) > 10)]
        
      #  data['Pass'] = np.select(conditions_3, choices_1)
        
  #  if not ((data['x_start'] > data['x_end']) & (data['y_start'] > data['y_end'])).empty:
   #     conditions_4 = [
    #        ((math.sqrt((((data['x_start']) - (data['x_end']))**2) + ((data['y_start'])-(data['y_end']))**2)) < 5), 
     #       ((math.sqrt((((data['x_start']) - (data['x_end']))**2) + ((data['y_start'])-(data['y_end']))**2)) >= 5 and 
      #      (math.sqrt((((data['x_start']) - (data['x_end']))**2) + ((data['y_start'])-(data['y_end']))**2)) < 10),
       #     ((math.sqrt((((data['x_start']) - (data['x_end']))**2) + ((data['y_start'])-(data['y_end']))**2)) > 10)]

        #data['Pass'] = np.select(conditions_4, choices_1)

被注释掉的部分是当x

_

end大于x

_

启动等。

这是我的数据框

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-02 06:47:10

试试这个

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

#create a function that calculates what you want (i.e distance in this case)
def dist(x0, x1, y0, y1):
    return ((x1 - x0)**2 + (y1 - y0)**2)**(1/2)

# Your dataframe (please provide this yourself next time)
df = pd.DataFrame({'x_start':[24, 24, 24, 5], 
                   'x_end':[12, 36, 12, 12], 
                   'y_start':[35, 35, 95, 87], 
                   'y_end':[57, 57, 57, 57]})

#this calculates the distance
df['Pass'] = df.apply(lambda x: 
                      dist(x['x_start'], x['x_end'], x['y_start'], x['y_end']), axis=1) 

#this will apply your conditions
df['Pass'] = np.select(
                [df['Pass']<5, (df['Pass']<10) & (df['Pass']>=5), df['Pass']>=10], 
                ['short','medium','long'], 
                default=np.nan) 
df
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66430530

复制
相关文章

相似问题

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