Python 如何获得最后n行的标准偏差?

Python 如何获得最后n行的标准偏差?,python,pandas,Python,Pandas,我在熊猫数据框中加载了OHLC csv。我正在尝试获取最后n行的标准。我正在通过df循环。以下是我迄今为止所做的工作: df['std'] = np.zeros([len(df), 1]) for i, row in df.iterrows(): df['std'][i] = df['Close'][-(i+ln):i].std() 编辑: 为了清楚起见,我需要每行最后n行的std。假设我的行索引是100,n是25。我需要75:100标准,需要将其应用于每一行。这是我的解决方案,但我认

我在熊猫数据框中加载了OHLC csv。我正在尝试获取最后n行的标准。我正在通过df循环。以下是我迄今为止所做的工作:

df['std'] = np.zeros([len(df), 1])
for i, row in df.iterrows():
    df['std'][i] = df['Close'][-(i+ln):i].std()
编辑:

为了清楚起见,我需要每行最后n行的std。假设我的行索引是100,n是25。我需要75:100标准,需要将其应用于每一行。这是我的解决方案,但我认为这是一个漫长的过程:

for i, row in df.iterrows():
    if i > ln-2:
        end = -(clen-i)
        begin = end - ln
        df['std'][i] = df['Close'][begin:end].std()

我想那可能有用

df.tail(n).std()

您可以使用DataFrame
滚动功能。在您的示例中,我不确定您是否只需要最后n行的std,或者在
df['std']
的第I行中,您需要
df['Close']
的第(I-n)-th到第I行的std

第二个选项可以这样做:

df['std'] = df['Close'].rolling(n).std()

你能把你的数据帧的样本和你想要的结果放进去吗?它不会给我整个数据帧std()?我需要每行最后n行的std,所以在
df['std']
的第I行中需要哪一行的std?第i行中的此解决方案具有从(i-n+1)-th到i-thI的行标准,需要第n行关闭。例如,第100次收盘时的标准差为[75:100],这正是我的解决方案所做的。您必须阅读
DataFrame.rolling
文档以设置好的参数,例如,如果您计算std的窗口应该正确关闭或不关闭,bo我确信您需要rolling函数(),但这只给出最后n的std。我需要每个行的最后n抱歉,我的不好。它只给出最后n行std您需要最后n行中每一行的std?尝试将axis=1添加到std df.tail(n).std(axis=1)中,您得到了哪个错误?您设置了最后一行的数量了吗?