df.append正在创建新列,而不是追加到现有列

时间:2019-03-06 02:45:36

标签: python python-3.x pandas dataframe

我写了一个程序来计算,该程序从作为循环一部分的每分钟计算的两个变量创建一个数据帧。

在这里,我创建了数据框的初始条目:

columnsMA = ['Time', 'Fast MA:', 'Slow MA:']
dfMA = pd.DataFrame([[datetime.now().strftime("%m/%d/%Y, %H: %M"), 
                      fastMA, slowMA]], columns=columnsMA)

这是第一分钟的正确输出:

                 Time  Fast MA:  Slow MA:
0  03/05/2019, 21: 40   3827.75    3826.9

一分钟后,我将这些新行的快速MA和慢速MA的计算结果添加到以下行:

    seriesMA = [[datetime.now().strftime("%m/%d/%Y, %H: %M"), fastMA, 
                 slowMA]]
    dfMA = dfMA.append(seriesMA, ignore_index=True)

但是此后的输出是:

                    0       1       2  Fast MA:  Slow MA:                Time
0                 NaN     NaN     NaN   3827.75    3826.9  03/05/2019, 21: 40
1            03/05/2019, 21: 41  3828.5  3827.4       NaN       NaN                 NaN

我无法弄清楚如何使它停止追加到新列,而不是在现有列之后。如果您能帮助的话,谢谢您!

2 个答案:

答案 0 :(得分:1)

要附加一行,请附加一个字典:

seriesMA = {'Time': datetime.now().strftime("%m/%d/%Y, %H: %M"), 'Fast MA:' : fastMA, 'Slow MA:' : slowMA}
    dfMA = dfMA.append(seriesMA, ignore_index=True)

答案 1 :(得分:1)

在pandas数据帧中,列附加有一系列,而行附加有Dictionary(具有与字典关键字完全相同的列名)