У меня есть датафрейм, где значение pic_code может повторяться.Если это повторяется, я хочу установить переменную "keep" в "t" для pic_code, ближайшего к его mpe_wgt.
Например, второй pic_code имеет "keep", установленный в t, так как он имеет«вес» ближе всего к соответствующему «mpe_weight».Мой код приводит к тому, что «keep» остается «f» для всех, а «diff» остается «100» для всех.
df['keep']='f'
df['diff']=100
def cln_df(data):
if pd.unique(data['mpe_wgt']).shape==(1,):
data['keep'][0:1]='t'
elif pd.unique(data['mpe_wgt']).shape!=(1,):
data['diff']=abs(data['weight']-(data['mpe_wgt']/100))
data['keep'][data['diff']==min(data['diff'])]='t'
return data
df=df.groupby('pic_code').apply(cln_df)
df до
pic_code weight mpe_wgt keep diff
1234 45 34 f 100
1234 32 23 f 100
45344 54 35 f 100
234 76 98 f 100
234 65 12 f 100
df должно быть
pic_code weight mpe_wgt keep diff
1234 45 34 f 11
1234 32 23 t 9
45344 54 35 t 100
234 76 98 t 22
234 65 12 f 53
Я довольно плохо знаком с Python, поэтому, пожалуйста, держите решения как можно более простыми.Я действительно хочу, чтобы мой метод работал, поэтому, пожалуйста, не слишком увлекайтесь.Заранее благодарим за помощь.