Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python读取第一行和第二行,然后读取第二行和第三行_Python_Python 3.x - Fatal编程技术网

Python读取第一行和第二行,然后读取第二行和第三行

Python读取第一行和第二行,然后读取第二行和第三行,python,python-3.x,Python,Python 3.x,我有这样一个文件: 截止日期价格 t 101 t+1103.1 t+2 104 t+3100 我想计算第(t+1)天、第(t+2)天、第(t+3)天的回报 有人能帮我吗?非常感谢您可以尝试这样简单的方法,其中迭代器为2 with open(file, 'r') as f: f_lst = f.read().splitlines() for idx in range(0,len(s), 2): line1 = f_lst[idx] lin

我有这样一个文件:

截止日期价格

t 101

t+1103.1

t+2 104

t+3100

我想计算第(t+1)天、第(t+2)天、第(t+3)天的回报


有人能帮我吗?非常感谢

您可以尝试这样简单的方法,其中迭代器为2

with open(file, 'r') as f:
    f_lst = f.read().splitlines()
    
    for idx in range(0,len(s), 2):
        line1 = f_lst[idx] 
        line2 = f_lst[idx+1]
        rate_return = (line2[Closed_Price] - line1[Closed_Price])/line1[Closed_Price]

解决方案是为
for
循环的下一次迭代存储当前行。在每次迭代中,您都可以访问前一行和当前行。在第一次迭代的情况下,没有存储前一行,因此我们跳过需要两行的操作(在
if
语句中)

filename=“lines.txt”
打开(文件名为“r”)作为文件:
前一行=无
对于文件中的行:
#带尾随符\r\n此行的回车符和换行符
line=line.rstrip()
#跳过第一行,因为没有上一行
如果前一行不是无:
打印(上一行、上一行、浮动(行)-浮动(上一行))
#将当前行存储到变量中,以便在下一次迭代中使用
前一行=前一行
使用文件
lines.txt

101
103.1
104
100
控制台输出为:

101 103.1 2.0999999999999943
103.1 104 0.9000000000000057
104 100 -4.0
注:笨拙的小数是由于;然而,你的计算可能仍然相对准确


如果这是一个CSV文件,您可以将其读入pandas数据框,并使用内置函数在其中进行所有分析

import pandas as pd
data = pd.read_csv(file, sep=" ")
data['return'] = data['Closed_Price'].pct_change()

数据是包含在excel电子表格还是txt文件中?@dingo它是一个csv文件
import pandas as pd
data = pd.read_csv(file, sep=" ")
data['return'] = data['Closed_Price'].pct_change()