Anonymous
Anonymous

Reputation: 1

Merge_asof inside loop

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

Answers (0)

Related Questions