【问题标题】:How to merge in python based on condition?如何根据条件在python中合并?
【发布时间】:2017-08-14 15:23:33
【问题描述】:

我想知道是否有可能通过给出“if”语句来合并两个数据帧。 例如

df

number account_name  classification
     1        name         named
     2        place        partner
     3        animal       class
     4        thing        territory
     5        dog          home

df1

account_name   Number   country
name            1         xx
place           2         xy
animal          7         yz
dog             8         zx

我正在寻找如下代码

pd.merge(df,df1, on= 'account_name') if df[number] == df1[number]

结果应该是这样的

number  account_name  classification  number Country
     1        name         named          1      xx
     2        place        partner        2      xy

我也试过 lambda 函数,代码是

x['nn'] = x.apply(lambda y: pd.merge(df, df1, on = 'account_name')  if df[number] == df1[number] else 1, axis=1)

【问题讨论】:

    标签: python pandas if-statement merge


    【解决方案1】:

    看来您需要在参数on 中添加列:

    df = pd.merge(df,df1, on= ['account_name', 'number']) 
    print (df)
       number account_name classification country
    0       1         name          named      xx
    1       2        place        partner      xy
    

    但如果列名不同,则在merge 中使用参数left_onright_on

    df = pd.merge(df, 
                  df1, 
                  left_on= ['account_name', 'number'], 
                  right_on= ['account_name', 'Number']) 
    print (df)
       number account_name classification  Number country
    0       1         name          named       1      xx
    1       2        place        partner       2      xy
    

    【讨论】:

    • 总是这么简单吗。我花了很多时间思考和尝试合并。一旦我合并了 40k 记录的所有可能匹配项,然后在第二列再次合并。谢谢..解决了我生活中的大问题
    猜你喜欢
    • 2018-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-13
    • 2020-10-13
    • 2020-12-21
    • 1970-01-01
    相关资源
    最近更新 更多