Python 如何获得最后n行的标准偏差?
我在熊猫数据框中加载了OHLC csv。我正在尝试获取最后n行的标准。我正在通过df循环。以下是我迄今为止所做的工作: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标准,需要将其应用于每一行。这是我的解决方案,但我认
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)中,您得到了哪个错误?您设置了最后一行的数量了吗?