Reputation: 1
for i in range(1, 4): # Find up to 3 closest matches
merged = pd.merge_asof(
result1,
ftth_sorted,
on='key',
by='usluga',
direction='forward', # Find next closest higher value
suffixes=('', f'_{i}_ftth')
)
# Rename columns dynamically
merged.rename(columns={
f'product_offer_id_{i}_ftth': f'closest_product_offer_id_{i}',
f'po_name_{i}_ftth': f'closest_po_name_{i}',
f'deb_total_{i}_ftth': f'closest_deb_total_{i}'
}, inplace=True)
merged[f'closest_deb_total_{i}'].fillna(merged['key'], inplace=True)
merged['key'] = merged[f'closest_deb_total_{i}']
merged.sort_values(by='key', ascending=True, inplace=True)
result1 = merged.drop(columns=[col for col in merged.columns if col.endswith('_ftth')])
print(result1['key'].head())
result1
I'm trying to find 3 closest greater values from 'key' column of 'ftth_sorted' table from 'key' column of 'result1' table. And directrly assign values in one row as [closest1, closest2, closest3, etc.] But the problem is that after 1st iteration, it's showing the same value from closest1 for every remaining columns
How can i solve it?
I tried to use chatgpt, and to write without foor loop
Upvotes: -1
Views: 26