嗨,我正在构建一个工具,从YFinance下载股票数据,我想下载一次历史数据,将其保存到目录中的VS文件,然后每天只添加最后一个交易日(一行)并重新保存它.问题是CSV文件是从头开始覆盖的,所以如果我只提供要下载的最后一个交易日,那将是我将结束的每个符号的所有行. 我使用的代码分为两部分.首先在Pandas中创建数据框,然后将其与我的所有新函数一起保存,然后从保存它的目录中获取我想要的任何其他项目中的数据框. 我还有第二个问题,关于这是不是使用CSV文件和PANDA数据帧而不是SQLITE数据库的良好实践,以及不同方法之间的优缺点.

第1部分 创建目录和CSV文件

import yfinance as yf
import os
import pandas as pd


with open(r'C:\zPythonFilesDir\yfinance\symbolstest.csv') as f:
    lines = f.read().splitlines()
    #print(lines)
    for symbol in lines:
        print(symbol)
        data = yf.download(symbol, start="2023-07-01", end="2023-07-30")
        #print(data)
        data.to_csv(r'C:\zPythonFilesDir\yfinance\datasetstest\{}.csv'.format(symbol))

for filename in os.listdir(r'C:\zPythonFilesDir\yfinance\datasetstest'):
    #print(filename)
    symbol = filename.split(".")[0]
    print(symbol)
    df = pd.read_csv(r'C:\zPythonFilesDir\yfinance\datasetstest/{}'.format(filename))
    # new columns and functions here
    x = 2 * round(df['High'],2)
    df['new_val'] = x
    # write new datasets with functions columns in different directory
    df.to_csv(r'C:\zPythonFilesDir\yfinance\newdatasetstest\{}.csv'.format(symbol))
    print(df)

第二部分 从CSV文件中获取数据

import os
import pandas as pd


for filename in os.listdir(r'C:\zPythonFilesDir\yfinance\newdatasetstest'):
    #print(filename)
    symbol = filename.split(".")[0]
    print(symbol)
    df1= pd.read_csv(r'C:\zPythonFilesDir\yfinance\newdatasetstest/{}'.format(filename))
    print(df1)

df2 = pd.read_csv(r'C:\zPythonFilesDir\yfinance\newdatasetstest/AAPL.csv')
print(df2)

Symbstest.csv包含感兴趣的符号

推荐答案

数据框默认为_csv方法在打开文件时使用写入模式,您需要做的是将其更改为追加,这可以用来完成.

    SAVE_TO_PATH = r'C:\zPythonFilesDir\yfinance\newdatasetstest\{}.csv'.format(symbol)
    df.to_csv(SAVE_TO_PATH, mode='a', header=False)

为了提高可读性,我还将路径移到了函数参数之外,并将Header设置为False,因为我们不想每天都追加它们

顺便说一句,它是CSV(逗号分隔值),而不是CVS.

最重要的是,当您想要向现有文件添加行时,请使用MODE=‘a’,或者当您第一次添加/想要覆盖文件时,请使用MODE=‘w’.(MODE=‘w’是默认设置,因此您不必指定它)

Python相关问答推荐

两极按组颠倒顺序

Pandas .类型错误:只能将字符串(而不是int)连接到字符串

云上Gunicorn的Flask-socketIO无法工作

如何在Python中使用ijson解析SON期间检索文件位置?

优化在numpy数组中非零值周围创建缓冲区的函数的性能

如何从具有多个嵌入选项卡的网页中Web抓取td类元素

线性模型PanelOLS和statmodels OLS之间的区别

韦尔福德方差与Numpy方差不同

如何让程序打印新段落上的每一行?

用合并列替换现有列并重命名

如何获取numpy数组的特定索引值?

如何将一个动态分配的C数组转换为Numpy数组,并在C扩展模块中返回给Python

如何创建一个缓冲区周围的一行与manim?

部分视图的DataFrame

Plotly Dash Creating Interactive Graph下拉列表

合并帧,但不按合并键排序

如何更改groupby作用域以找到满足掩码条件的第一个值?

在Python中调用变量(特别是Tkinter)

LocaleError:模块keras._' tf_keras. keras没有属性__internal_'''

导入错误:无法导入名称';操作';