gpt4 book ai didi

python - 寻址数据帧中某个值旁边的值

转载 作者:行者123 更新时间:2023-12-01 07:52:47 27 4
gpt4 key购买 nike

尝试寻址数据帧中的某个值。

我得到了一个如下所示的 CSV 文件: enter image description here

我使用 stock 列作为 for 循环的索引。然后我使用 selenium 从雅虎财经获取了历史价格数据,并将其转换为如下所示的数据框: enter image description here我想在从雅虎财经获得的数据框中搜索股票日期。

for stock_symbol in mystocks:
yahoo_url = "https://finance.yahoo.com/quote/"+stock_symbol+"/history?period1=0&period2=2597263000&interval=1d&filter=history&frequency=1d"

获取数据

bs_data = BeautifulSoup(source_data, features="lxml")
table = bs_data.find('table', attrs={"data-test": "historical-prices"})
dataf = pd.read_html(str(table))

我想创建一个 for 循环,从所需的日期行获取值并将其放入 csv(股票名称日期开盘高低收盘*调整收盘**交易量)。

我想要的输出只是我得到的 CSV 中的某个日期。例如,在 CALM 的 CSV 中,所需的日期是 2019 年 4 月 1 日,因此我只想从 Yahoo 数据框中提取此日期数据。

最佳答案

我不是 BeautifulSoup 的专家,我通过将 csv 格式的数据下载到默认目录(chrome 选项)(有一个下载链接)来尝试解决这个问题

这绝不是您使用 BeautifulSoup 时问题的答案,而是您可以考虑的事情。

import time
from pathlib import Path

import pandas as pd
from selenium.webdriver import Remote
from selenium.webdriver.chrome.options import Options

download_path = Path(r'C:\stackoverflow')

options = Options()
options.add_experimental_option("prefs", {
"download.default_directory": str(download_path),
"download.prompt_for_download": False,
"download.directory_upgrade": True,
"safebrowsing.enabled": True
})

driver = Remote(options=options)
stock_symbols = ['CALM', 'CTRA', 'NVGS', 'ANGO']

for stock_symbol in stock_symbols:
driver.get(f'https://finance.yahoo.com/quote/{stock_symbol}/history?period1=0&period2=2597263000&interval=1d&filter=history&frequency=1d')
time.sleep(5) # Replace with Webdriver Wait

download_data_link = driver.find_element_by_link_text('Download Data')
file_name = download_data_link.get_attribute('download')
download_data_link.click()

file_path = download_path / file_name
while True:
if file_path.exists():
break

df = pd.DataFrame.from_csv(file_path)
df['Stock Name'] = stock_symbol
print(df.head())

break

输出

           Open    High      Low     Close  Adj Close   Volume Stock Name
Date
1996-12-12 1.81250 1.8125 1.68750 1.703125 0.743409 1984400 CALM
1996-12-13 1.71875 1.8125 1.65625 1.781250 0.777510 996800 CALM
1996-12-16 1.81250 1.8125 1.71875 1.718750 0.750229 122000 CALM
1996-12-17 1.75000 1.8125 1.75000 1.773425 0.774094 239200 CALM
1996-12-18 1.81250 1.8125 1.75000 1.812500 0.791151 216400 CALM

按日期过滤

df = df.reset_index()
print(df.loc[df['Date'] == '1996-12-12'])

Date Open High Low Close Adj Close Volume Stock
Name
0 1996-12-12 1.8125 1.8125 1.6875 1.703125 0.743409 1984400 CALM

关于python - 寻址数据帧中某个值旁边的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56113751/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com