【问题标题】:how do i use vlookup using python having mutliple columns in both dataframe我如何使用在两个数据框中都有多个列的python使用vlookup
【发布时间】:2022-01-20 21:05:31
【问题描述】:

我需要关于使用 python 进行 vlookup 的帮助。我只需要 df1 中 df2 的一个匹配列数据而不是全部 df2 数据。 我的输入低于两个数据框。

df1 
NodeName    NEID    Configured_Speed
MUM         25234   511.054
DEL         32251   154.155
CHN         32584   224.949
KOL         27076   372.932
PUN         29743   203.556
TN          29037   224.949
df2 

NodeName    Address         Region
KOL         10.134.9.242    East
DEL         10.51.195.236   North
CHN         10.139.56.59    South
TN          10.133.19.251   South
KEL         10.51.60.6      South
MUM         10.1.59.193     West
PUN         10.51.60.66     West

我的输出是

NodeName    NEID    Configured_Speed    Address
MUM         25234   511.054             10.1.59.193
DEL         32251   154.155             10.51.195.236
CHN         32584   224.949             10.139.56.59
KOL         27076   372.932             10.134.9.242
PUN         29743   203.556             10.51.60.66
TN          29037   224.949             10.133.19.251

我尝试了下面的代码,但地址栏为空白。

df1['Address']=df1.NodeName.map(df2.Address)

当我使用下面的代码时,df2 的所有列都进入了df1

df3 = pd.merge(df1, df2, on ='NodeName',how ='left')

【问题讨论】:

    标签: python pandas left-join vlookup


    【解决方案1】:

    您可以对df2 进行子集化,以仅发送合并过程所需的列-

    df3 = pd.merge(df1, df2[['NodeName', 'Address']], on ='NodeName', how ='left')
    

    【讨论】:

    • 非常感谢。但我希望输出数据帧是带有更新地址列的 df1,因为 df1 中有多个列(超过 30 个)列,我必须在 df1 中进行更多计算。另外请帮助您如何编辑问题,以便进一步进行。
    • 嗨@SudarshanWaman,你介意澄清你的问题吗?
    • 谢谢@IsseyChua。实际上我的 df1 有 30 多列,而我只给出了 3 列是必需的。在使用 df2 进行此 vlookup 之后,我必须对 df1 进行许多计算。所以我的问题是:-是否有可能仅在 df1 中进行相同的 vlookup。比如 df1['Address'] = pd.merge(df1, df2[['NodeName', 'Address']], on ='NodeName',how ='left')。
    • 它没有回答你原来的问题吗?您的后续问题不清楚,您是否想要这样的东西- df1 = pd.merge(df1, df2[['NodeName', 'Address']], on ='NodeName', how ='left')
    • @SudarshanWaman 很高兴知道
    【解决方案2】:

    你可以试试

    df3 = pd.merge(df1, df2['NodeName','Address'],on='NodeName',how='left')
    

    【讨论】:

    • 这是不正确的,因为您将 df1 与 col NodeName 上仅 df2 的 Address col 合并,这将引发 KeyError,因为您的第二个数据帧中没有名为 NodeName 的 col,即 df2['地址']
    • 谢谢@mrVerma,我相应地更改了代码。
    猜你喜欢
    • 2021-08-06
    • 2022-11-22
    • 2014-09-20
    • 2019-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-31
    • 1970-01-01
    相关资源
    最近更新 更多