Python 对于循环i数据帧,按行计数而不是按列计数

Python 对于循环i数据帧,按行计数而不是按列计数,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个很大的数据框df,我正试图对它进行一些计算,当我在计算之前打印数据框df时,它是这样的: Date High Low ... Close Volume Adj Close 0 2000-01-03 47.995617 45.515598 ... 45.880310 6471200.0 34.997250 1 2000-01-04 45.479130 43.509

我有一个很大的数据框df,我正试图对它进行一些计算,当我在计算之前打印数据框df时,它是这样的:

            Date        High         Low  ...       Close      Volume   Adj Close
0     2000-01-03   47.995617   45.515598  ...   45.880310   6471200.0   34.997250
1     2000-01-04   45.479130   43.509705  ...   44.147945  10440800.0   33.675823
2     2000-01-05   44.676769   42.962643  ...   42.962643   8646200.0   32.820454
3     2000-01-06   44.457947   42.452049  ...   43.837940  10990900.0   33.489136
4     2000-01-07   44.786182   43.327351  ...   44.476181   6016400.0   33.976704
...          ...         ...         ...  ...         ...         ...         ...
5013  2019-12-05  118.430000  117.589996  ...  118.279999   3128300.0  118.279999
5014  2019-12-06  121.440002  119.910004  ...  120.610001   3287600.0  120.610001
5015  2019-12-09  121.529999  120.110001  ...  120.459999   2885200.0  120.459999
5016  2019-12-10  121.470001  120.029999  ...  120.900002   2518200.0  120.900002
5017  2019-12-11  121.379997  120.099998  ...  120.639999   1885981.0  120.639999

[5018 rows x 7 columns]
现在我想对其进行RSI计算,并将结果添加到数据帧的

def rsi_calculator(df):
    last_value = float(df. loc[0, 'Adj Close'])
    print(last_value)
    for count, row in enumerate(df, start=1):
        print(float(df. loc[count, 'Adj Close']))

它根本没有完成,但是我如何让我的循环运行5018次,这是我的行数,而不是7次,这是我的列数

34.997249603271484
33.67582321166992
32.82045364379883
33.4891357421875
33.97670364379883
34.450363159179695
34.770755767822266
34.589675903320305
试一试

至少对我来说,这种技术输出一对项(一个元组)。[1]逻辑获取元组中的第二项,即您要查找的值


祝你好运

DataFrame.\uuuu iter\uuuu
沿着“info”轴,这是数据帧的列轴。(
DataFrame.\u info\u axis
)。相反,您希望使用df.iterrows()中的行作为idx的
,尽管通常有一种避免循环的方法。如果您在浏览器中搜索“PANDAS iterate rows”,您会发现可以更好地解释这一点的引用,而我们在这里无法处理。最有可能的情况是,您将使用一个向量化表达式来实现这一点——您的代码将不会有
for
循环,您只需向它提供行向量操作和通用的“do this”语句。一般来说,您需要进一步学习PANDAS教程。嗨,Jjorsal,您能详细介绍一下您希望dataframe的新列是什么吗?比如你想要每天的调整收盘价减去前一天的调整收盘价吗?从您的
rsi_计算器
中,我不确定您希望新专栏超出什么范围。您希望在pandas编程中避免循环(这是一种与通用python不同的编码风格)。请用公式显示实际的RSI计算。虽然这个答案是正确的,OP和未来的读者应该避免在程序中循环。如果RSI是指相对强度指数,那么在一次调用(不是迭代调用)中有向量化(非循环)计算方法。请看:.@Parfait在效率方面是正确的。基本上总有比在数据帧上循环更快的方法。我以前做过几次,但性能并不重要,因为我永远不会有很多行数据,我只是觉得循环更直观。在处理股票数据时,如本问题中所述,性能通常非常重要,因为存在如此多的观察结果,快速获得结果至关重要。
for col,row in df.iterrows():
    print((col,row["Adj Close"])[1])