Hãy để chúng tôi xem làm thế nào để tìm thấy tổng các giá trị âm và dương. Đầu tiên, hãy tạo khung dữ liệu với các giá trị âm và dương -
dataFrame = pd.DataFrame({'Place': ['Chicago', 'Denver', 'Atlanta', 'Chicago', 'Dallas', 'Denver','Dallas', 'Atlanta'], 'Temperature': [-2, 30, -5, 10, 30, -5, 20, -10]})
Tiếp theo, sử dụng groupby để nhóm trên cơ sở cột Địa điểm -
groupRes = dataFrame.groupby(dataFrame['Place'])
Sử dụng hàm lambda để trả về giá trị âm và dương. Chúng tôi cũng đã thêm các giá trị âm và dương riêng lẻ -
# lambda function def plus(val): return val[val > 0].sum() def minus(val): return val[val < 0].sum()
Ví dụ
Sau đây là mã hoàn chỉnh -
import pandas as pd # create a DataFrame with temperature in celsius dataFrame = pd.DataFrame({'Place': ['Chicago', 'Denver', 'Atlanta', 'Chicago', 'Dallas', 'Denver','Dallas', 'Atlanta'], 'Temperature': [-2, 30, -5, 10, 30, -5, 20, -10]}) print(dataFrame) # using groupby to group on the basis of place groupRes = dataFrame.groupby(dataFrame['Place']) # lambda function def plus(val): return val[val > 0].sum() def minus(val): return val[val < 0].sum() print(groupRes['Temperature'].agg([('negTemp', minus), ('posTemp', plus)]))
Đầu ra
Điều này sẽ tạo ra mã sau -
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