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