【问题标题】:I want to vlookup dataframe.If value is present in another df ,keep same value,otherwise put #N/A in pandas python [duplicate]我想查找数据框。如果值存在于另一个 df 中,请保持相同的值,否则将 #N/A 放入 pandas python [重复]
【发布时间】:2021-09-24 17:19:45
【问题描述】:
import pandas as pd
data = {'Car':['Jeep', 'Maruti Suzuki', 'Audi','Kia'],
        'order':[10,15,2,5]}
        # Create DataFrame
df = pd.DataFrame(data)
print (df)
output:
             Car  order
0           Jeep     10
1  Maruti Suzuki     15
2           Audi      2
3            Kia      5
data = {'Car':['Jeep', 'Maruti Suzuki','Kia'],
        'City':['M','P',"D"]
        }
df2 = pd.DataFrame(data)
print (df2)
            Car City
0           Jeep    M
1  Maruti Suzuki    P
2            Kia    D

需要的输出

           Car          Available     order
0           Jeep           Jeep     10
1  Maruti Suzuki  Maruti Suzuki     15
2           Audi           #N/A      2
3            Kia            Kia      5

我想查找。如果df2中存在df['Car'],保持相同的值。如果df2中不存在,则在df['Available']中添加#N/A。

需要的输出

             Car      Available  order
0           Jeep           Jeep     10
1  Maruti Suzuki  Maruti Suzuki     15
2           Audi           #N/A      2
3            Kia            Kia      5

【问题讨论】:

    标签: python pandas dataframe numpy merge


    【解决方案1】:

    使用mergeindicator 参数:

    out = pd.merge(df, df2['Car'], on='Car', how='left', indicator=True)
    out['Available'] = np.where(out['_merge'] == 'both', out['Car'], '#N/A')
    # out = out.drop(columns='_merge')
    
    >>> out[['Car', 'Available', 'order']]
                 Car      Available  order
    0           Jeep           Jeep     10
    1  Maruti Suzuki  Maruti Suzuki     15
    2           Audi           #N/A      2
    3            Kia            Kia      5
    

    【讨论】:

    • 谢谢。但是我想添加带有汽车数据的新列。如果数据不可用 df2 然后添加#N/A
    • @San。我更新了我的答案。现在应该好了。
    • np.where 仅当两个数据帧的长度相同时才有效。如果我的 df 长度不同会怎样
    • out 的长度始终为 df,因为您合并了 left。我应该用out['Car']替换df['Car']
    • @San,你有时间试试代码吗?
    猜你喜欢
    • 2022-12-15
    • 1970-01-01
    • 2019-08-14
    • 2017-04-20
    • 1970-01-01
    • 2021-04-03
    • 1970-01-01
    • 1970-01-01
    • 2021-09-19
    相关资源
    最近更新 更多