RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 1346535
Accepted
максим ильин
максим ильин
Asked:2022-04-06 22:55:22 +0000 UTC2022-04-06 22:55:22 +0000 UTC 2022-04-06 22:55:22 +0000 UTC

如何更改.csv?

  • 772

适用于读取,但不会更改文件中的值:

import csv

directory="C:\\Users\\pyth\\output_3.csv"

with open(directory, 'r+') as f:
    d_reader = csv.DictReader(f,delimiter='\t')
    for row in d_reader:
        if float(row['Open']) > float(row['Close']):
            row['CLINE_TYPE'] = '1_MIN'
        else : row["CLINE_TYPE"] = '1_MAX'

如何在 Pandas 中编写嵌套分支语句?

目的:找出相差 5 分钟的行,前提是第一行打开 > 关闭,第二行打开 < 关闭或第一行打开 < 关闭,第二行打开 > 关闭。

现实生活中的例子:去年哪两天昨天早上的温度高于昨天晚上的温度,第二天晚上的温度又高于第二天早上的温度,反之亦然。

逻辑:从输入数据中,需要选择满足以下条件的一对行: 1)“OPEN TIME”字段中的行之间相差5分钟(即一行中的下一行) ) 2) 如果在第一行中“OPEN”字段中的值严格大于“Close”字段中的值,则在第二行中,OPEN 严格小于 CLOSE,反之亦然。如果满足条件,则在“CLOSE”>“OPEN”的情况下将时间值写入date_cline_up变量,在“CLOSE”<“OPEN”的情况下写入date_cline_dow,并写入文件。接下来,循环查找满足条件的第二对字符串。如果不满足条件,则 date_cline_up 或 date_cline_dow 的值在 Nan 中被覆盖,具体取决于哪一行是该对中的第一个或随后的每个对中的哪一行。从输入数据中,获得满足条件的以下行:第 0-1 行将包含字段 CLINE_TYPE -'1_MAX' 中的铭文,第 2-3 行将包含 1_MAX。“完整条件”中的代码完全涵盖了所描述的逻辑。

输入数据 :

    Open Time   Close time  Open    Close       STATUS  CLINE_TYPE
0   2021-11-06 13:25:00 2021-11-06 13:29:59.999000064   60534.13    60509.9         
1   2021-11-06 13:30:00 2021-11-06 13:34:59.999000064   60509.89    60570.01        
2   2021-11-06 13:35:00 2021-11-06 13:39:59.999000064   60570.01    60469.34        
3   2021-11-06 13:40:00 2021-11-06 13:44:59.999000064   60469.34    60546.6

满状态:

date_cline_up=None
date_cline_dow=None

for row in d_reader:
    curent_date = datetime.strptime(row["Open Time"], '%Y-%m-%d %H:%M:%S')
    if date_cline_up is None and date_cline_dow is None:
        if float(row["Open"]) > float(row["Close"]):
            date_cline_dow = datetime.strptime(row["Open Time"], '%Y-%m-%d %H:%M:%S')
        elif float(row["Open"]) < float(row["Close"]):
            date_cline_up = datetime.strptime(row["Open Time"], '%Y-%m-%d %H:%M:%S')
    elif date_cline_up is None and date_cline_dow is not None:
        if (((curent_date - date_cline_dow).total_seconds()) % 3600 // 60) == 5 and float(row["Open"]) < float(row["Close"]):
            row["CLINE_TYPE"] = '1_MIN'
        else:
            date_cline_dow = None
    elif date_cline_up is not None and date_cline_dow is None:
        if (((curent_date - date_cline_up).total_seconds()) % 3600 // 60) == 5 and float(row["Open"]) > float(row["Close"]):
            row["CLINE_TYPE"] = '1_MAX'
        else:
            date_cline_up = None
python
  • 1 1 个回答
  • 10 Views

1 个回答

  • Voted
  1. Best Answer
    MaxU - stop genocide of UA
    2022-04-07T21:33:02Z2022-04-07T21:33:02Z

    如果我正确理解了这个问题...

    首先,让我们从“下一个”行添加具有值的辅助列:

    df[["Open2", "Close2"]] = df[["Open", "Close"]].shift(-1)
    

    发生了:

    In [13]: df
    Out[13]:
                Open Time                    Close time      Open     Close     Open2    Close2
    0 2021-11-06 13:25:00 2021-11-06 13:29:59.999000064  60534.13  60509.90  60509.89  60570.01
    1 2021-11-06 13:30:00 2021-11-06 13:34:59.999000064  60509.89  60570.01  60570.01  60469.34
    2 2021-11-06 13:35:00 2021-11-06 13:39:59.999000064  60570.01  60469.34  60469.34  60546.60
    3 2021-11-06 13:40:00 2021-11-06 13:44:59.999000064  60469.34  60546.60       NaN       NaN
    

    现在您可以过滤:

    In [15]: df["Open Time"].diff().dt.total_seconds().fillna(300).eq(300) & (np.sign((df["Open"] - df["Close"]) * (df["Open2"] - df["Close2"])) < 0)
    Out[15]:
    0     True
    1     True
    2     True
    3    False
    dtype: bool
    
    In [16]: df[df["Open Time"].diff().dt.total_seconds().fillna(300).eq(300) & (np.sign((df["Open"] - df["Close"]) * (df["Open2"] - df["Close2"])) < 0)]
    Out[16]:
                Open Time                    Close time      Open     Close     Open2    Close2
    0 2021-11-06 13:25:00 2021-11-06 13:29:59.999000064  60534.13  60509.90  60509.89  60570.01
    1 2021-11-06 13:30:00 2021-11-06 13:34:59.999000064  60509.89  60570.01  60570.01  60469.34
    2 2021-11-06 13:35:00 2021-11-06 13:39:59.999000064  60570.01  60469.34  60469.34  60546.60
    
    • 2

相关问题

  • 是否可以以某种方式自定义 QTabWidget?

  • telebot.anihelper.ApiException 错误

  • Python。检查一个数字是否是 3 的幂。输出 无

  • 解析多个响应

  • 交换两个数组的元素,以便它们的新内容也反转

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    表格填充不起作用

    • 2 个回答
  • Marko Smith

    提示 50/50,有两个,其中一个是正确的

    • 1 个回答
  • Marko Smith

    在 PyQt5 中停止进程

    • 1 个回答
  • Marko Smith

    我的脚本不工作

    • 1 个回答
  • Marko Smith

    在文本文件中写入和读取列表

    • 2 个回答
  • Marko Smith

    如何像屏幕截图中那样并排排列这些块?

    • 1 个回答
  • Marko Smith

    确定文本文件中每一行的字符数

    • 2 个回答
  • Marko Smith

    将接口对象传递给 JAVA 构造函数

    • 1 个回答
  • Marko Smith

    正确更新数据库中的数据

    • 1 个回答
  • Marko Smith

    Python解析不是css

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5