Слияние кадров данных не на основе индекса, а значений


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