import pandas as pd

df0 = pd.DataFrame({'E': [20, 34, 30, 1], 'B': ['a', 'c', 'a', 'c'], 'num': [1, 2, 2, 1], 'D': ['b', 'b', 'b', 'b'], 'Acc': [200, 100, 30, 50], 'AccD': [-5, 105, -30, 50]})

按B对df分组,并将'num'=1时,计算'Acc'中最小的值赋给df0新的列accessMin;计算'AccD'中最小的值赋给df0新的列accessDMin

grouped = df0[df0['num'] == 1].groupby('B') accessMin = grouped['Acc'].min().reset_index().rename(columns={'Acc': 'accessMin'}) accessDMin = grouped['AccD'].min().reset_index().rename(columns={'AccD': 'accessDMin'}) df0 = pd.merge(df0, accessMin, how='left', on='B') df0 = pd.merge(df0, accessDMin, how='left', on='B')

判断若accessMin的值小于0,则accMinfinal=accessDMin的值,否则=accessMin

df0['accMinfinal'] = df0.apply(lambda x: x['accessDMin'] if x['accessMin'] < 0 else x['accessMin'], axis=1)

按B对df分组,取分组后df的Acc比accMinfinal大的数据.

result = df0[df0['Acc'] > df0['accMinfinal']].groupby('B').agg({'E': 'sum', 'Acc': 'mean'}).reset_index()

print(result

df0 = pdDataFrameE 20 34 30 1 B a c a c num 1 2 2 1 D b b b b Acc 200 100 30 50 AccD -5 105 -30 501、按B对df分组并将

原文地址: https://www.cveoy.top/t/topic/fglI 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录