如何在python中跨多个数据帧进行矢量化时间序列计算

时间:2019-07-09 19:21:28

标签: python pandas loops numpy dataframe

我的三个数据帧(表示为df1,df2,df3)是190行x 100,000列的时间序列数据。我在每个数据框中都有不同的宏观经济数据。最左侧的列是时间序列所属的国家/地区的名称。第一行是数据时间戳的标题行。我需要使用三个数据帧中的数据执行时间序列计算,以使时间戳匹配,以使所有三个数据帧的50 x 2500值的使用相同。

计算= df1值/((df2值-df1值)* df3值)

我该如何以向量化方式进行处理?

Small最小的3个数据帧和期望的最终结果df

df1 = pd.DataFrame([['Bulgaria', 2, 3, 4, 5], ['Estonia', 2, 3, 4, 5], ['Sweden', 2, 3, 4, 5]], columns=['State', '1990', '1991', '1992', '1993'])


df2 = pd.DataFrame([['Bulgaria', 12, 13, 14, 15], ['Estonia', 12, 13, 14, 15], ['Sweden', 12, 13, 14, 15]], columns=['State', '1990', '1991', '1992', '1993'])

df3 = pd.DataFrame([['Bulgaria', .02, .03, .04, .05], ['Estonia', .02, .03, .04, .05], ['Sweden', .02, .03, .04, .05]], columns=['State', '1990', '1991', '1992', '1993'])

intended_final_df = pd.DataFrame([['Bulgaria', 10, 10, 10, 10], ['Estonia', 10, 10, 10, 10], ['Sweden', 10, 10, 10, 10]], columns=['State', '1990', '1991', '1992', '1993'])

1 个答案:

答案 0 :(得分:0)

您需要将状态列移到所有数据帧的索引中,然后使用此计算:

df1 / ((df2-df1)* df3)

我使用此命令遍历设置索引的所有数据帧:

[d.set_index('State', inplace=True) for d in [df1,df2,df3]]

输出:

          1990  1991  1992  1993
State                           
Bulgaria  10.0  10.0  10.0  10.0
Estonia   10.0  10.0  10.0  10.0
Sweden    10.0  10.0  10.0  10.0