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 在 Place 列的基础上进行分组 -

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

使用 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'])

# 拉姆达函数

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

以上是 Python - 在 Pandas 中使用 GroupBy 求和负值和正值 的全部内容, 来源链接: utcz.com/z/361059.html

回到顶部