鱼C论坛

 找回密码
 立即注册
查看: 1445|回复: 9

[已解决]python 的pandas 模块求助

[复制链接]
发表于 2018-9-16 09:57:25 | 显示全部楼层 |阅读模式

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

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

x
代码:
  1. import pandas as pd
  2. import numpy as np
  3. # 打开数据表,Excel是DataFrame数据类型
  4. df = pd.read_excel("analysis.xlsx")
  5. # 提取各个环节
  6. def ky_link():
  7.     key_link = []
  8.     key_link_date = list(df.columns)
  9.     for i in range(len(key_link_date)):
  10.         if "DATE" in key_link_date[i]:
  11.             [key_split,other_split] = key_link_date[i].split("_DAT",1)
  12.             if key_split[-4:] == "_END":
  13.                 key_link.append(key_split[:-4])
  14.             else:
  15.                 key_link.append(key_split[:-6])
  16.     key_link = set(key_link)
  17.     key_link = list(key_link)
  18.     return key_link

  19. # 各个环节的平均时长
  20. def link_analysis():
  21.     key_link = ky_link()
  22.     for each in key_link:
  23.         key_link1 = each + "_END_DATE"
  24.         key_link2 = each + "_BEGIN_DATE"
  25.         dg = df[key_link1].fillna(value=0)
  26.         # 提取有效数据
  27.         dt = df.loc[df[key_link1] != 0]
  28.         # 初始化时间列表
  29.         time = []
  30.         working_time = []
  31.         for i in range(dt.shape[0]):
  32.             link_time = dt[key_link1].iloc[i] - dt[key_link2].iloc[i]
  33.             time.append(link_time)
  34.         # time_link分析时长
  35.         for j in time:
  36.             days = str(j).split("days")
  37.             working_time.append(int(days[0]))
  38.         
  39.         link_mean = np.mean(working_time)
  40.         link_median = np.median(working_time)
  41.         counts = np.bincount(working_time)
  42.         link_count = np.argmax(counts)
  43.         print(each,link_mean,link_median,link_count)
  44. link_analysis()            
  45.             
复制代码


问题:
Traceback (most recent call last):
  File "C:\Users\Chysial\Desktop\业扩高压归档\高压数据\4.第二季度业扩高压数据\1.data_filter.py", line 44, in <module>
    link_analysis()
  File "C:\Users\Chysial\Desktop\业扩高压归档\高压数据\4.第二季度业扩高压数据\1.data_filter.py", line 38, in link_analysis
    working_time.append(int(float(days[0])))
ValueError: could not convert string to float: 'NaT'
但是,我单独拿出来一行运行是没有问题的?

>>> a=df["REPLY_TO_RECEIVE_POWER_SUPPLY_SCHEME_END_DATE"][1]-df["REPLY_TO_RECEIVE_POWER_SUPPLY_SCHEME_BEGIN_DATE"][1]
>>> a
Timedelta('0 days 02:25:02')
>>> d=str(a).split("days")
>>> type(d[0])
<class 'str'>
>>> float(d[0])
0.0
>>> int(d[0])
0
原excel文件,哪些都是时间格式,下面是样例:
SCENE_INVESTIGATION_BEGIN_DATE        SCENE_INVESTIGATION_END_DATE
2018/3/2 10:43:43        2018/3/6 8:51:30
2018/1/29 13:22:45        2018/1/30 8:51:18
2018/1/9 13:42:24        2018/1/9 15:10:32
2018/5/3 11:13:31        2018/5/4 16:49:47
2018/3/13 9:56:47        2018/3/13 10:12:21
2018/4/18 10:13:42        2018/4/23 10:00:58
2018/3/14 9:48:14        2018/3/14 10:09:37
2018/4/8 15:01:18        2018/4/8 15:23:28
各位大哥帮下忙,自己懵逼了,谢谢!!!

最佳答案
2018-9-16 12:10:54
红色报错是因为解释器说它,不能把字符类型的参数转化为浮点数。  
最好是先转化时间戳,然后再转化成你需要的时间格式或计算
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2018-9-16 10:37:17 From FishC Mobile | 显示全部楼层
timedelta.days 不就好了吗?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-9-16 11:15:34 | 显示全部楼层
claws0n 发表于 2018-9-16 10:37
timedelta.days 不就好了吗?

详细说一下,小哥哥
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-9-16 12:10:54 | 显示全部楼层    本楼为最佳答案   
红色报错是因为解释器说它,不能把字符类型的参数转化为浮点数。  
最好是先转化时间戳,然后再转化成你需要的时间格式或计算
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-9-16 12:20:27 From FishC Mobile | 显示全部楼层
Chysial 发表于 2018-9-16 11:15
详细说一下,小哥哥

有内建函数,么么
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-9-16 14:12:34 | 显示全部楼层
claws0n 发表于 2018-9-16 12:20
有内建函数,么么

需要time模块还是其他内置函数
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-9-16 14:13:28 | 显示全部楼层
wongyusing 发表于 2018-9-16 12:10
红色报错是因为解释器说它,不能把字符类型的参数转化为浮点数。  
最好是先转化时间戳,然后再转化成你需 ...

ok,了解了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-9-16 14:32:22 From FishC Mobile | 显示全部楼层
Chysial 发表于 2018-9-16 14:12
需要time模块还是其他内置函数

Panda 就有了不是吗?你的 a 返回不就是了?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-9-16 14:44:29 | 显示全部楼层
claws0n 发表于 2018-9-16 14:32
Panda 就有了不是吗?你的 a 返回不就是了?

是有,但是客户不会看那么细的,我要分片成天,是否达到预警条件,所以我转化str然后筛选出days。然后就出现了这种问题。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-9-16 16:41:19 From FishC Mobile | 显示全部楼层
Chysial 发表于 2018-9-16 14:44
是有,但是客户不会看那么细的,我要分片成天,是否达到预警条件,所以我转化str然后筛选出days。然后就 ...

不明白。你是程序员,不是客户... 也许输出上有一些问题。既然有内建函数,就用吧~
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-13 16:01

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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