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

pythonserver side programmingprogramming更新于 2025/10/20 22:36:17

让我们看看如何求负值和正值的总和。首先,创建一个包含正值和负值的 DataFrame −

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

接下来,使用 groupby 根据 Place 列 − 进行分组

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

使用 lambda 函数返回正值和负值。我们还分别添加了正值和负值 −

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

示例

以下是完整代码 −

import pandas as pd

# 创建一个温度为摄氏温度的 DataFrame
dataFrame = pd.DataFrame({'Place': ['Chicago', 'Denver', 'Atlanta', 'Chicago', 'Dallas', 'Denver','Dallas', 'Atlanta'], 'Temperature': [-2, 30, -5, 10, 30, -5, 20, -10]})
print(dataFrame)

# 使用 groupby 根据地点分组
groupRes = dataFrame.groupby(dataFrame['Place'])

# lambda 函数
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

相关文章


有用资源