鱼C论坛

 找回密码
 立即注册
查看: 3206|回复: 5

[已解决]错误显示:unsupported operand type(s) for -: 'str' and 'str' 如何解决呀!

[复制链接]
发表于 2020-3-21 19:57:55 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 澍梵. 于 2020-4-5 20:05 编辑

源文件数据:

  1.     id                 time               jd               wd
  2. 0  1  2018-12-27 10:46:24  118.8196860  32.3586430
  3. 1  1  2018-12-27 10:48:57  118.8257510  32.3325110
  4. 2  1  2018-12-27 10:49:02  118.8254230  32.3306620
  5. 3  1  2018-12-27 10:49:07  118.8275570  32.3325600
  6. 4  1  2018-12-27 10:54:40  118.7770990  32.2727000
  7. ​
复制代码


源代码:

  1. from math import sin, cos, asin, sqrt
  2. import numpy as np
  3. import pandas as pd
  4. import datetime

  5. data = pd.read_excel('userdata_1.xlsx')

  6. def GetDistance(jdA, wdA, jdB, wdB):
  7.     #    jdA,wdA,jdB,wdB = map(radians, [float(jdA), float(wdA), float(jdB), float(wdB)]) # 经纬度转换成弧度
  8.     dlon = jdB - jdA
  9.     dlat = wdB - wdA
  10.     a = sin(dlat / 2) ** 2 + cos(wdA) * cos(wdB) * sin(dlon / 2) ** 2
  11.     distance = 2 * asin(sqrt(a)) * 6371 * 1000  # 地球平均半径,6371km
  12.     distance = round(distance / 1000, 3)
  13.     return distance

  14. # 借助多点金纬度求其中心点
  15. def ComputeMeanCoord(data, start, end):
  16.     jd = data.loc[start:end, 'jd']
  17.     wd = data.loc[start:end, 'wd']
  18.     x = np.mean(jd)
  19.     y = np.mean(wd)
  20.     return (x, y)


  21. # 获取停留点的函数,,data为dataframe对象,距离门限单位为米,时间门限单位为秒


  22. if __name__ == "__main__":
  23.     data = pd.read_excel('userdata_1.xlsx')
  24.     #   distThreh,timeThreh=map(eval,input("距离跨度(用空格隔开),时间距(以分钟为单位):").split())
  25.     #   StayPoint_Detection(data,distThreh,timeThreh)
  26.     SP = StayPoint_Detection(data,15,60)
  27.     print('停留点数目=', len(SP))
  28.     print(SP)
复制代码


错误显示:

[/code]
最佳答案
2020-3-21 20:09:08
datetime中有个函数可以将字符串转为可读类型的date
datetime.datetime.strptime('2017-3-22 15:25:32','%Y-%m-%d %H:%M:%S')
可以将你所读到的字符串转为date,然后就能用date的各种函数了
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-3-21 19:59:38 From FishC Mobile | 显示全部楼层
42行str  和str不能做减法运算
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-21 20:00:04 | 显示全部楼层
希望会的可以帮忙帮我解决下:这里是时间相减: Time = TraTime[j-1] - TraTime[i]
                                                   时间格式为:  2018-12-27 10:46:24
感谢各位的帮助
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-21 20:09:08 | 显示全部楼层    本楼为最佳答案   
datetime中有个函数可以将字符串转为可读类型的date
datetime.datetime.strptime('2017-3-22 15:25:32','%Y-%m-%d %H:%M:%S')
可以将你所读到的字符串转为date,然后就能用date的各种函数了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-21 20:10:16 | 显示全部楼层
wp231957 发表于 2020-3-21 19:59
42行str  和str不能做减法运算

我知道,42行是时间相减时间格式:2018-12-27 10:46:24 该怎么修改
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-21 20:15:13 | 显示全部楼层
sunrise085 发表于 2020-3-21 20:09
datetime中有个函数可以将字符串转为可读类型的date
datetime.datetime.strptime('2017-3-22 15:25:32','% ...

谢谢,运行出来了,非常感谢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-5-14 19:02

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表