簡體   English   中英

合並數據框不是基於索引而是值

[英]Merging Dataframes not based on index but values

我有 2 個要合並的數據框。

第一個 df 總結了每個城鎮中最常見的 5 個場地:

第一自由度

第二個df總結了每個城鎮中每個場地類別的頻率:

第二個df

我想合並兩個數據框,以便前 5 個場地的頻率也出現在第一個 df 中。

例如。

Output 在第 0 行:

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

我試過 using.merge pandas

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

但這似乎僅用於合並索引或列名。 如果我的合並位於 1 df 的列名和另一個 df 的值上怎么辦?

謝謝!

我認為你可以在不合並的情況下做到這一點。 像這樣的逐行操作

    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))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM