Python 3.x 比较for循环内的百分比更改值

Python 3.x 比较for循环内的百分比更改值,python-3.x,pandas,tkinter,yfinance,Python 3.x,Pandas,Tkinter,Yfinance,我有一个如下的清单 我想能够比较QQQ在9:35的百分比变化,同时与AAPL和AMD等其他股票进行比较。因此,检查9:35时AAPL的百分比变化是否大于9:35时QQQ的百分比变化。AMD在9点35分,9点40分,9点45分都是一样的 我想通过python实现这一点 这是我到目前为止所知道的,但并不完全正确 import pandas as pd import time import yfinance as yf import datetime as dt from pandas_datarea

我有一个如下的清单 我想能够比较QQQ在9:35的百分比变化,同时与AAPL和AMD等其他股票进行比较。因此,检查9:35时AAPL的百分比变化是否大于9:35时QQQ的百分比变化。AMD在9点35分,9点40分,9点45分都是一样的

我想通过python实现这一点 这是我到目前为止所知道的,但并不完全正确

import pandas as pd
import time
import yfinance as yf
import datetime as dt
from pandas_datareader import data as pdr
from collections import Counter
from tkinter import Tk
from tkinter.filedialog import askopenfilename
import os
from pandas import ExcelWriter
d1 = dt.datetime(2020, 8, 5,9,00,00) 
d2 = dt.datetime(2020, 8, 5,16,00,00)


pc=Counter()
filePath=r"C:\Users\Adil\Documents\Python Test - ET\Data\Trail.xlsx"
stocklist = pd.read_excel(filePath)

for i in stocklist.index:
    symbol=stocklist['Symbol'][i]
    date=stocklist['Date'][i]
    close=stocklist['Close'][i]
    pc=stocklist['PercentChange'][i]

    if (pc[i]>pc['QQQ']):
        print(pc[i])
好,

我从一条评论中得到了一条解释OP想要什么的解释:


是的,所以我想看看在给定的5分钟时间内 该股表现优于QQQ

你需要做的第一件事,就是让它成为你可以按时间和符号查找信息的工具。以下是我将如何做到这一点:

my_data = {}

for i in stocklist.index:
    symbol=stocklist['Symbol'][i]
    date=stocklist['Date'][i]
    pc=stocklist['PercentChange'][i]
    my_data[symbol, date] = pc
这就形成了一个字典,您可以通过调用
myu数据['ABCD','datetime']

然后,我会列出所有的时间

time_set = set()
for i in stocklist.index:
    date = stocklist['Date'][i]
    time_set.add(date)
times = list(time_set)
times.sort()
如果您需要计算机资源,您可以将这两个循环组合在一起运行,但我认为将它们分开会使代码更容易理解

然后对符号执行相同的操作:

sym_set = set()
for i in stocklist.index:
    date = stocklist['Symbol'][i]
    sym_set.add(date)
symbols = list(sym_set)
symbols.sort()
再一次,您可以在第一个for循环中创建这个集合,但是通过这种方式,您可以看到我们正在努力更好地完成什么

最后要做的是进行比较:

for i in times:
    qs = my_data['QQQ', i]
    for j in symbols:
        if qs != 'QQQ':
            which = "better" if my_data[j, i]>qs else "worse"
            print(j + " did " + which + " than QQQ at " + i)

现在,这只是将信息打印到控制台,您应该用希望输出的方式替换print命令。(另外,我认为越高越好;我希望这是正确的。)

请注意,SO不是按需编码的站点。你应该提供你的尝试()很抱歉没有代码发布,但我还没有取得很大进展,我不完全确定你想在这里做什么。你能在这里画出或解释一下你想要什么样的输出吗?我的最佳猜测是,你想要一个表格,显示某个股票在每个时间戳上的表现是否优于QQ?是的,所以我想看看在给定的5分钟时间内,某个股票的表现是否优于QQ感谢你的回答。因此,当我打印我的_数据[QQQ]时,我会得到这个错误键error:('QQQ',Timestamp('2020-08-05 10:00:00'))请确保从
my_data
调用条目的方式与您在其中输入条目的方式完全相同。我猜
stocklist['Symbol'][i]
并没有给出确切的
QQQ
或类似的信息?