Python - 使用 Pandas 中的 GroupBy 求和负值和正值


让我们看看如何找出负值和正值的总和。首先,创建一个包含正值和负值的数据框 -

dataFrame = pd.DataFrame({'Place': ['Chicago', 'Denver', 'Atlanta', 'Chicago', 'Dallas', 'Denver','Dallas', 'Atlanta'], 'Temperature': [-2, 30, -5, 10, 30, -5, 20, -10]})

接下来,按照地理位置列使用 groupby 进行分组 -

groupRes = dataFrame.groupby(dataFrame['Place'])

使用 lambda 函数返回正值和负值。我们还单独添加了正值和负值 -

# lambda function def plus(val): return val[val > 0].sum() def minus(val): return val[val < 0].sum()

示例

以下是完整代码 -

Open Compiler
import pandas as pd # create a DataFrame with temperature in celsius dataFrame = pd.DataFrame({'Place': ['Chicago', 'Denver', 'Atlanta', 'Chicago', 'Dallas', 'Denver','Dallas', 'Atlanta'], 'Temperature': [-2, 30, -5, 10, 30, -5, 20, -10]}) print(dataFrame) # using groupby to group on the basis of place groupRes = dataFrame.groupby(dataFrame['Place']) # lambda function def plus(val): return val[val > 0].sum() def minus(val): return val[val < 0].sum() print(groupRes['Temperature'].agg([('negTemp', minus), ('posTemp', plus)]))

输出

这将产生以下代码 -

      Place      Temperature
0   Chicago               -2
1    Denver               30
2   Atlanta               -5
3   Chicago               10
4    Dallas               30
5    Denver               -5
6    Dallas               20
7   Atlanta              -10
           negTemp  posTemp
Place
Atlanta        -15       0
Chicago         -2      10
Dallas           0      50
Denver          -5      30

更新于: 09-9月-2021

1 千次+ 浏览

开启你的 职业生涯

通过完成课程获取证书

开始
广告