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

如何在python中跨多个数据帧进行矢量化时间序列计算,python,pandas,loops,numpy,dataframe,Python,Pandas,Loops,Numpy,Dataframe,我的三个数据帧(表示为df1、df2、df3)是190行x 100000列的时间序列数据。我在每个数据框中都有不同的宏观经济数据。最左边的一栏是时间序列所属国家的名称。第一行是数据时间戳的标题行。我需要使用三个数据帧中的数据执行时间序列计算,以便时间戳匹配,使用50 x 2500的值进行的相应计算对于所有三个数据帧都是相同的 计算=df1值/((df2值-df1值)*df3值) 我怎样才能以矢量化的方式处理这个问题 3个数据帧和所需最终结果df的最小示例 df1=pd.DataFrame(['保

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

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

我怎样才能以矢量化的方式处理这个问题

3个数据帧和所需最终结果df的最小示例

df1=pd.DataFrame(['保加利亚',2,3,4,5],'爱沙尼亚',2,3,4,5],'瑞典',2,3,4,5]],列=['State','1990','1991','1992','1993']
df2=pd.数据帧([['保加利亚',12,13,14,15],'爱沙尼亚',12,13,14,15],'瑞典',12,13,14,15],[State',1990',1991',1992',1993]]
df3=pd.DataFrame([['保加利亚'、.02、.03、.04、.05]、'爱沙尼亚'、.02、.03、.04、.05]、'瑞典'、.02、.03、.04、.05]),列=['State'、'1990'、'1991'、'1992'、'1993')
预期最终数据帧=pd.数据帧([['保加利亚'、10、10、10、10、10]、'爱沙尼亚'、10、10、10]、'瑞典'、10、10、10、10、10]),列=['国家'、'1990'、'1991'、'1992'、'1993'])

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

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

您应该很少需要在pandas中使用循环,但是为了更好地帮助您,我们需要有关您的问题的更多信息。请参阅并为您的具体问题提供一个示例输入和输出什么样的计算?您的问题非常模糊。请给我们一个样本数据,并说明你正在尝试做什么。我已经用一个最简单的例子更新了这个问题,以帮助解释这个问题。有人能解释一下计算是如何工作的吗?这是非常好的,但我想更多地理解它,这样我可以在将来使用这些知识来构建更独立的模型。计算是有效的,因为pandas会进行内部数据校准,这意味着pandas会查看数据帧索引和列标题,并将所有计算都对齐到匹配的单元格上。好的,这非常方便!您能详细说明一下遍历所有数据帧的命令吗?.set_索引似乎正在锁定遍历所有数据帧时共享的引用列?是的,因为我希望数据帧中的数字根据“state”计算,我将state列移动到数据帧的索引中。我可以用三个单独的命令来完成这项工作
df1=df1.set_index('State');df2=df2.set_索引(“状态”);df3=df3.set_index('State')
但我选择使用列表理解,并对列表中的每个数据帧调用set_index方法。使用
inplace=True
修改当前内存中的数据帧。