Обединяване на Dataframes не на базата на индекс, а на стойности

Имам 2 кадъра с данни, които бих искал да обединя.

Първият df обобщава 5-те най-често срещани места във всеки град:

1st df

Вторият df обобщава честотите на всяка категория на място във всеки град:

2nd df

Бих искал да обединя двата кадъра с данни, така че честотата на всяко от първите 5 места също да се появи в първия df.

За напр.

Изход на ред 0:

Ang Mo Kio | Food Court | Coffee Shop | Dessert Shop | Chinese Restaurant | Jap Restaurant | 0.64 | 0.2 | 0.1 | ....

Опитах да използвам .merge pandas

sg_venues_sorted.merge(sg_onehot_grouped, on='Town')

но това изглежда е само за сливане на имена на индекси или колони. Какво ще стане, ако моето сливане е върху имена на колони на 1 df и стойности на другия df?

Благодаря!


person lyh198    schedule 10.06.2020    source източник
comment
Опитах да използвам .merge pandas къде е кодът за това?   -  person cs95    schedule 10.06.2020


Отговори (1)


Мисля, че можете да направите това без обединяване. Мъдра операция като тази

    import pandas as pd
    df1 = pd.DataFrame({"Town":['t1','t2','t3','t4','t5'],
                       "1stcommon":["c1","c2","c3","c4","c5"],
                       "2ndcommon":["c3","c8","c1","c9","c10"]})

    df2 = pd.DataFrame({"Town":['t1','t2','t3','t4','t5'],
                       "c1":[0,0.1,0.1,0.2,0],
                       "c2":[0,0.1,0.1,0.2,0],
                       "c3":[0,0.1,0.1,0.2,0],
                       "c4":[0,0.1,0.1,0.2,0],
                       "c5":[0,0.1,0.1,0.2,0],
                       "c6":[0,0.1,0.1,0.2,0],
                       "c7":[0,0.1,0.1,0.2,0],
                       "c81":[0,0.1,0.1,0.2,0],
                       "c9":[0,0.1,0.1,0.2,0],
                        "c10":[0,0.1,0.1,0.2,0]})

    def create_col(x):
        return df2.loc[df2.Town==x['Town'],x[['1stcommon','2ndcommon']]].values[0]

    df1['1st_common'],df1['2nd_common'] = zip(*df1.apply(lambda x: create_col(x),axis=1))
person sau    schedule 10.06.2020
comment
Това работи благодаря! Но все още съм объркан как работи ламбда... изглежда, че е наистина полезен инструмент - person lyh198; 10.06.2020
comment
towardsdatascience.com/ - person sau; 11.06.2020