Python-Pandas中的GroupBy求正负值之和

Python-Pandas中的GroupBy求正负值之和

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

dataFrame = pd.DataFrame({'Place': ['芝加哥', '丹佛', '亚特兰大', '芝加哥', '达拉斯', '丹佛','达拉斯', '亚特兰大'],
                          'Temperature': [-2, 30, -5, 10, 30, -5, 20, -10]})
Python

接下来,使用groupby基于Place列分组-

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

使用lambda函数返回正负值,我们还分别添加了正负值-

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

示例

下面是完整的代码-

import pandas as pd

# 创建一个带有摄氏度的数据帧
dataFrame = pd.DataFrame({'Place': ['芝加哥', '丹佛', '亚特兰大', '芝加哥', '达拉斯', '丹佛','达拉斯', '亚特兰大'], 'Temperature': [-2, 30, -5, 10, 30, -5, 20, -10]})
print(dataFrame)

# 基于place使用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)]))
Python

输出

这将产生以下代码-

      Place      Temperature
0   芝加哥               -2
1   丹佛               30
2   亚特兰大               -5
3   芝加哥               10
4   达拉斯               30
5   丹佛               -5
6   达拉斯               20
7   亚特兰大              -10
           negTemp  posTemp
Place
亚特兰大        -15       0
芝加哥         -2      10
达拉斯           0      50
丹佛          -5      30
Python

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册