Я пытаюсь найти соответствие со следующим 2 фреймом данных:
df_co:
Cntr No Labour Material Amount
BHCU 2604370 0.0 82.5 82.5
BHCU 2604370 24.0 22.0 46.0
ДФ:
Cntr No Total
BHCU 2604370 82.0
BHCU 2604370 46.0
код:
df['Tally'] = ((df_co['Cntr No'].isin(df['Cntr No'])) &
((df_co['Labour'].isin(df['Total'])) |
(df_co['Material'].isin(df['Total'])) |
(df_co['Amount'].isin(df['Total'])))).map({True:'Yes',False:'No'})
Это не должно давать мне совпадения, так как df_co «Сумма» равна 82,5, а «Общая» сумма равна 82,00.
Но мой результат дает мне оба совпадения.
Результат:
Cntr No Total Tally
BHCU 2604370 82.0 Yes
BHCU 2604370 46.0 Yes
Подозреваю, что сравнение кодов неверно.
конвертировать в число с плавающей точкой:
a = df.iloc[:, :5]
b = df.iloc[:,5:29].apply(lambda x :
x.str.extract('(\d+)',expand=False).astype(float))
c = df.iloc[:, 29:]
df = pd.concat([a,b,c], axis=1)