Python 如何高效地在具有相同索引的两个大型数据帧之间进行操作?

Python 如何高效地在具有相同索引的两个大型数据帧之间进行操作?,python,pandas,dataframe,iteration,Python,Pandas,Dataframe,Iteration,我有这些数据帧(Zcp、Qp(0)、Sc(0)): 其中,我代表国家(c),hs4代表产品(p),从1995年到2015年,每年都有这些值。 我要做的是: 我之所以处于起步阶段,是因为我找不到一种高效快捷的方法来关联I和hs4的相同代码,并执行我需要的操作。我试着用这个模式,但速度太慢了,只适用于乘法和求和: for row1 in df.itertuples(index=False): for row2 in q.itertuples(index=False): datas1

我有这些数据帧(Zcp、Qp(0)、Sc(0)):

其中,我代表国家(c),hs4代表产品(p),从1995年到2015年,每年都有这些值。 我要做的是:

我之所以处于起步阶段,是因为我找不到一种高效快捷的方法来关联I和hs4的相同代码,并执行我需要的操作。我试着用这个模式,但速度太慢了,只适用于乘法和求和:

for row1 in df.itertuples(index=False):
    for row2 in q.itertuples(index=False):
    datas1 = df.loc[row1._2:row1._22]
    datas2 = q.loc[row2._1:row2._21]
    if row1.hs4==row2.hs4:
        df.loc[row1._2:row1._22]=datas1*datas2
        Df = df.groupby(['i']).agg(np.sum).reset_index()
(随着df.itertuples的“1995”…“2015”变成了“u2”…“u22”,我不知道为什么)。 然后我应该用对数进行除法和求和,也许每个周期更新Qp和Sc。 我在网上搜索了一些帮助,但没有找到正确的答案

for row1 in df.itertuples(index=False):
    for row2 in q.itertuples(index=False):
    datas1 = df.loc[row1._2:row1._22]
    datas2 = q.loc[row2._1:row2._21]
    if row1.hs4==row2.hs4:
        df.loc[row1._2:row1._22]=datas1*datas2
        Df = df.groupby(['i']).agg(np.sum).reset_index()