如何将以下规则应用于我的数据帧panda



我的数据帧=

df = pd.DataFrame({'class': 'a a b b b c c c'.split(),
'code': ['103','104','103','103','104','104','104','103'],
'qty': [4,4,5,6,11,8,9,0]})

对于每个类,我想要是否存在代码103和104,并且如果与代码103相关联的数量>到代码104的数量。

我已经为问题的第一部分开发了一个不起作用的函数,但我不知道如何进行第二个

def regle_2(df):
if (df['code'].any() == '103') & (df['code'].any() == '104'):
df['bool'] = True
else:
df['bool'] = False
return df

我像这个一样使用它

g = df.groupby('class').apply(regle_2)

这就是的结果

A       code    qty  bool
0   a   103      4   False
1   a   104      4   False
2   b   103      5   False
3   b   103      6   False
4   b   104      11  False
5   c   104      8   False
6   c   104      9   False
7   c   103      0   False

提前感谢您的建议

尝试:

regle2 = lambda x: x.loc[x['code'].eq('103'), 'qty'].max() 
> x.loc[x['code'].eq('104'), 'qty'].min()
df['bool'] = df['class'].map(df.groupby('class').apply(regle2))
print(df)
# Output:
class code  qty   bool
0     a  103    4  False
1     a  104    4  False
2     b  103    5  False
3     b  103    6  False
4     b  104   11  False
5     c  104    8  False
6     c  104    9  False
7     c  103    0  False

注意:您不需要检查类103或104是否存在,因为当您在空数据帧上使用maxmin时,返回值为nan

最新更新