【问题标题】:Pandas: fill in a dataframe column with a serie starting at a specifc index熊猫:用从特定索引开始的系列填充数据框列
【发布时间】:2019-02-23 05:50:11
【问题描述】:

我的数据框如下所示:

    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.

有什么帮助吗?谢谢!

【问题讨论】:

  • df.at[18:, 'macd'] = pd.Series(macd)
  • 干得好!你可以把它作为答案,我会批准它!

标签: python pandas


【解决方案1】:

转换为未定义索引的Series 不是一个好主意,因为新的Series 和旧索引之间可能不对齐:

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

pd.Series 的解决方案:

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

【讨论】:

    猜你喜欢
    • 2018-03-25
    • 1970-01-01
    • 1970-01-01
    • 2018-06-20
    • 1970-01-01
    • 1970-01-01
    • 2017-03-06
    • 2015-02-15
    • 1970-01-01
    相关资源
    最近更新 更多