继续将时间序列中的新值添加到数据框中,以使其成为历史数据框?

时间:2018-03-15 20:28:37

标签: python pandas dataframe

我想用时间序列数据帧中的值创建历史数据框。

今天,我的df1如下:

df1:
      A    B    C
0   1.0  2.0  3.0

明天,我的df1如下:

df1:
      A    B    C
0   1.5  2.6  3.7

所以我明天想要的输出如下:

df2:
      A    B    C
0   1.0  2.0  3.0
1   1.5  2.6  3.7

我只想继续每天添加' df1'到一个新的数据框(' df2'),这样我就可以创建一个包含每日值的历史数据框。你能帮帮我吗?谢谢。

2 个答案:

答案 0 :(得分:0)

使用pd.concat

df1 = pd.concat([df1, df2])

pd.DataFrame.append

df1 = df1.append(df2)

答案 1 :(得分:0)

根据我的理解,您每天都会更新一次加载到df1的来源。然后,您要将df1添加到df2,该df1存储您目前在df1中看到的所有值。

我的建议基于df2.txt与您的结构相同,但具有随机值。每次运行此代码时,它都会将这些值附加到文件夹c:\timeseries中存储的文本文件C:/timeseries/

我们走了:

将文件夹.txt添加到您的系统。然后添加一个空的dates,A,B,C文件,输入字符串df2.txt,并将其另存为df1

以下代码段将占用该文本文件的长度,并使用它来构建每日索引以模拟您的情况。该索引将是df1的日期,否则每次运行代码段时都会填充随机数。每次运行代码段时,df2的数据都会附加到# imports import os import pandas as pd import numpy as np os.chdir('C:/timeseries/') # creates df1 with random numbers df1 = pd.DataFrame(np.random.randint(0,10,size=(1, 3)), columns=list('ABC')) # Read your historic values (will be empty the first time you run it) df2 = pd.read_csv('df2.txt', sep=",") df2 = df2.set_index(['dates']) # To mimic your real life situation, I'm adding a timeseries with a datestamp # that starts where df2 ends. If df2 i empty, it starts from 01.01.2018 # Make a dummy datelist to mimic your situation datelist = pd.date_range(pd.datetime(2018, 1, len(df2)).strftime('%Y-%m-%d'), periods=1).tolist() df1['dates'] = datelist df1 = df1.set_index(['dates']) df1.index = pd.to_datetime(df1.index) df2 = df2.append(df1) df2.to_csv('df2.txt') print(df2)

所以,请运行此代码段一次......

                      A    B    C
dates                    
2018-01-01 00:00:00  8.0  6.0  8.0

...获得此输出:

df1

这些是目前df2 A B C dates 2018-01-01 00:00:00 8.0 6.0 8.0 2018-01-02 00:00:00 9.0 1.0 0.0 2018-01-03 00:00:00 3.0 1.0 3.0 2018-01-04 00:00:00 4.0 7.0 6.0 2018-01-05 00:00:00 1.0 4.0 3.0 2018-01-06 00:00:00 3.0 7.0 6.0 2018-01-07 00:00:00 8.0 6.0 4.0 2018-01-08 00:00:00 4.0 7.0 0.0 2018-01-09 00:00:00 0.0 9.0 8.0 2018-01-10 00:00:00 8.0 4.0 8.0 的当前值。我这里没有使用随机种子,因此您的数据会与我的不同。

连续运行十次,你就会得到这个:

{{1}}

要从头开始,请继续删除df2.txt文件中第一行的所有行。

我希望这是你正在寻找的东西。如果没有,请告诉我。