我的三个数据帧(表示为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'])
答案 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