python pandas dataframe:在第二个数据框中创建一个具有汇总值ACC的列与第1个数据框架匹配的项目



我有以下数据框:

df1:
id | country | state | amt1 | amt2 | var1 | var2
1 | US | TX | 20 | 40 | a | X
2 | US | CA | 30 | 900 | b  | Y
3 | US | CA | 40 | 230 | c | X
4 | US | TX | 80 | 670 | d | X
5 | US | NY | 20 | 120 | a | Y
6 | US | TX | 10 | 80 | c | X

这是一个示例dataframe-我拥有的原始dataframe还有其他多个列,具有不同类型的变量

我想创建另一个数据框

为此,我已经创建了带有该国分组的第二个数据框,状态:

df2:
country | state | num
US | TX | 3
US | CA | 2
US | NY | 1

现在,我希望能够将任何列添加到DF2中,该列将包含" df1"的" AMT1"总和,用于匹配的国家/amp;状态

我能够使用iterrows进行此操作:

for i, row in df2.iterrows():
    amt = df1[(df1.state == df2.state ) & (df1.country == df2.country )].amt1.sum()
    df2.set_value(i, 'Amt ', amt)

但是,对于一个大数据集来说,这需要大量时间

想知道是否有任何有效执行此操作的方法,而不是使用iterrows

基于我的理解,您只需要groupby您的DF1,获取AMT1的总和,然后使用DF2

merge
df2.merge(df1.groupby(['country','state'],as_index=False).amt1.sum())
Out[792]: 
  country state  num  amt1
0      US    TX    3   110
1      US    CA    2    70
2      US    NY    1    20