Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x python dataframe:在第二个dataframe中创建一列,根据第一个dataframe中匹配的项使用聚合值_Python 3.x_Pandas_Dataframe - Fatal编程技术网

Python 3.x python dataframe:在第二个dataframe中创建一列,根据第一个dataframe中匹配的项使用聚合值

Python 3.x python dataframe:在第二个dataframe中创建一列,根据第一个dataframe中匹配的项使用聚合值,python-3.x,pandas,dataframe,Python 3.x,Pandas,Dataframe,我有以下数据帧: 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 这

我有以下数据帧:

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”之和

我可以使用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合并

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

那起作用了。。。谢谢@丽都Yw~:-)快乐编码