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

2024-06-16 12:54:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我的三个数据帧(表示为df1、df2、df3)是190行x 100000列的时间序列数据。我在每个数据框中有不同的宏观经济数据。最左边的一栏是时间序列所属国家的名称。第一行是数据时间戳的标题行。我需要使用跨三个数据帧的数据执行时间序列计算,以便时间戳匹配,使用50x2500处的值的相应计算对于所有三个数据帧是相同的。你知道吗

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

我怎样才能以矢量化的方式来处理这个问题?你知道吗

3个数据帧和期望最终结果的最小示例

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'])

Tags: columns数据dataframe时间序列国家pddf1
1条回答
网友
1楼 · 发布于 2024-06-16 12:54:22

您需要将state列移动到所有数据帧的索引中,然后使用以下计算:

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

相关问题 更多 >