Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/348.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 如何将一列添加到df中,以对a列中条目的所有匹配值求和?_Python_Python 3.x_Pandas - Fatal编程技术网

Python 如何将一列添加到df中,以对a列中条目的所有匹配值求和?

Python 如何将一列添加到df中,以对a列中条目的所有匹配值求和?,python,python-3.x,pandas,Python,Python 3.x,Pandas,我有一个数据框架,包含一系列的日期、每天活动的用户以及该用户当天的事件。我想在另一个列中添加一个列,该列提供每个用户在总时间跨度内的事件总数 我可以用这段代码使它工作,但我确信有一种更优雅的方法来实现它。请让我知道什么可以更好 df1 = pd.DataFrame({'users': ['Sara', 'James', 'Sara', 'James'], 'events': [3, 2, 5, 1] }) df2 =

我有一个数据框架,包含一系列的日期、每天活动的用户以及该用户当天的事件。我想在另一个列中添加一个列,该列提供每个用户在总时间跨度内的事件总数

我可以用这段代码使它工作,但我确信有一种更优雅的方法来实现它。请让我知道什么可以更好

df1 = pd.DataFrame({'users': ['Sara', 'James', 'Sara', 'James'],
                    'events': [3, 2, 5, 1]
                   })
df2 = df1.groupby('users').sum()
df2.rename(columns= {'events' : 'total'}, inplace=True)
df3 = pd.merge(df1, df2, how='left', on='users')

这给了我想要的输出,每个Sara行8个,每个James行3个。

确实有,你知道
转换方法吗?它以与当前数据帧相同的格式返回groupby

df1['total'] = df1.groupby('users').transform('sum')
print(df1)
      users  events  total
0   Sara       3      8
1  James       2      3
2   Sara       5      8
3  James       1      3
作为一种考验

df1 == df3
    users   events  total
0   True    True    True
1   True    True    True
2   True    True    True
3   True    True    True
详情如下:


确实有,你知道
转换方法吗?它以与当前数据帧相同的格式返回groupby

df1['total'] = df1.groupby('users').transform('sum')
print(df1)
      users  events  total
0   Sara       3      8
1  James       2      3
2   Sara       5      8
3  James       1      3
作为一种考验

df1 == df3
    users   events  total
0   True    True    True
1   True    True    True
2   True    True    True
3   True    True    True
详情如下: