金字塔决策交易系统

 找回密码
 

微信登录

微信扫一扫,快速登录

搜索
查看: 311|回复: 5

roll_time_series函数报错,是什么原因呢

[复制链接]

13

主题

84

帖子

84

积分

Rank: 4

等级: 专业版

注册:
2024-4-29
曾用名:
发表于 2024-9-2 18:30 | 显示全部楼层 |阅读模式
请教:
为什么一调用tsfresh库的roll_time_series函数,就会报这个错误?把最后调用的那句删了,不会报错。
经测试在pycharm中不报错,代码都是在pycharm里跑的通的
def derived_factors(data,output_dir):
    print(len(data))
    print(data)
    # Datetime格式化
    data['Datetime'] = pd.to_datetime(data['Datetime'], format='%Y%m%d%H%M%S')
    data['Datetime'] = data['Datetime'].dt.strftime('%Y%m%d%H%M%S')
    # 检查 'Datetime' 列是否为字符串格式  
    if data['Datetime'].dtype == object:  
        print("'Datetime' 列是字符串格式。")  
    else:  
        print("'Datetime' 列不是字符串格式。")  
    # 排序并去除空值
    data = data.sort_values(by='Datetime').fillna(method='ffill').dropna()

    # 设置显示选项以打印所有列  
    pd.set_option('display.max_columns', None)
    print(len(data))
    print(data)

    # 恢复默认设置  
    pd.reset_option('display.max_columns')

    if data.empty or len(data) > 10:
        start_time = datetime.now()
        start_time = start_time.strftime('%Y-%m-%d %H:%M:%S.%f')[:-3]  # 去掉最后三位以显示到毫秒
        print("开始应用 roll_time_series...")
        #应用roll_time_series
        rolled_df = roll_time_series(data, column_id='code', column_sort='Datetime', max_timeshift=10, min_timeshift=5).drop(columns=['code'])

        #print(rolled_df)

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号? 微信登录

x
回复

使用道具 举报

0

主题

95

帖子

95

积分

Rank: 8Rank: 8

等级: 超级版主

注册:
2021-5-27
曾用名:
发表于 2024-9-3 09:01 | 显示全部楼层
本帖最后由 资深技术07 于 2024-9-3 11:15 编辑

报错是识别不出来。要调用的tsfresh库,您本地安装了吗?

第三方库的安装,参考该说明
https://www.weistock.com/docs/Python_guide/notes/%E5%AE%89%E8%A3%85%E7%AC%AC%E4%B8%89%E6%96%B9%E5%BA%93.html

回复

使用道具 举报

13

主题

84

帖子

84

积分

Rank: 4

等级: 专业版

注册:
2024-4-29
曾用名:
 楼主| 发表于 2024-9-3 11:41 | 显示全部楼层
资深技术07 发表于 2024-9-3 09:01
报错是识别不出来。要调用的tsfresh库,您本地安装了吗?

第三方库的安装,参考该说明

肯定安装了,要不就会提示函数未定义了
回复

使用道具 举报

2

主题

580

帖子

621

积分

Rank: 9Rank: 9Rank: 9

等级: 管理员

注册:
2021-5-10
曾用名:
发表于 2024-9-3 13:53 | 显示全部楼层
报错信息中指出的是,你操作了一个空对象,并且对其执行了 write 方法。所以你应该检查造成空对象的原因、或者对空对象做判断处理后,再进行后续操作。

python代码编写中,用户需要对执行过程中产生的异常、边界情况等做特殊判断和处理,并遵循第三方库接口的定义标准。才能保证使用过程中的稳定性。
回复

使用道具 举报

13

主题

84

帖子

84

积分

Rank: 4

等级: 专业版

注册:
2024-4-29
曾用名:
 楼主| 发表于 2024-9-3 15:43 | 显示全部楼层
关键是不清楚哪个对象是空的,为什么是空的,哪里执行了write方法,啥啥都不知道,咱们的错误提示完全没有这些信息,这怎么改,怎么排查……
回复

使用道具 举报

2

主题

580

帖子

621

积分

Rank: 9Rank: 9Rank: 9

等级: 管理员

注册:
2021-5-10
曾用名:
发表于 2024-9-3 16:48 | 显示全部楼层
106107 发表于 2024-9-3 15:43
关键是不清楚哪个对象是空的,为什么是空的,哪里执行了write方法,啥啥都不知道,咱们的错误提示完全没有 ...

python代码的编译、执行都是python环境自己处理的,金字塔只是将其报错、执行结果捕获后显示在软件中。

策略中调用其他第三方库的接口,像write方法并不一定是策略直接使用的,第三方内部也会存在调用的可能。

在金字塔中,只能使用print打印输出或者精简代码,逐步定位到报错的相关位置。才能进一步处理。
注:基于金字塔的API接口,并不完全兼容所有的第三方库。像一些窗体、图形绘制类的都存在限制。



回复

使用道具 举报

您需要登录后才可以回帖 登录 | 微信登录

本版积分规则

手机版|小黑屋|上海金之塔信息技术有限公司 ( 沪ICP备13035422号 )

GMT+8, 2024-12-22 18:40 , Processed in 0.211204 second(s), 22 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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