我有以下数据框:
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