我的数据框如下所示:

    time                   price
0   2019-02-01 00:07:00    0.00234135
1   2019-02-01 00:10:15    0.0023541
2   2019-02-01 00:13:30    0.00235838
3   2019-02-01 01:03:00    0.00236977
4   2019-02-01 01:07:00    0.00237751


我要做的是使用以下代码计算MACD:macd, macd_signal, macd_histogram = ti.macd(data,10,20,9)

我现在想用相关的macd值创建一个新列:df['macd'] = pd.Series(macd)但是前20个值用于计算macd,因此前20个值没有macd值。

然后,我应该使用从索引20开始的macd值创建一列。我尝试这样做:df.at[18, 'macd'] = pd.Series(macd)但它不起作用,我收到以下错误消息:

ValueError: setting an array element with a sequence.


有什么帮助吗?谢谢!

最佳答案

没有定义索引的情况下转换为Series并不是一个好主意,因为新Series与旧索引之间可能无法对齐:

df.loc[18:, 'macd'] = macd[18:]

pd.Series解决方案:
df.loc[18:, 'macd'] = pd.Series(macd, index=df.index)

关于python - Pandas :以特定索引开头的序列填充数据框列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54706007/

10-12 21:43