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