【问题标题】:vlookup with pandas-how to fill an empty column with a value from another dataframevlookup with pandas-如何用另一个数据帧中的值填充空列
【发布时间】:2020-07-22 18:31:04
【问题描述】:

这对我来说是熊猫的一个新概念。我对 Excel 中的 vlookup 非常熟悉,所以这就是我想要做的:

df1=                      df2=
FUR  Total   otherT          FUR   Total
123    3     no value        123    8
345   -2     no value        345    3
234    6     no value        234   -1

所以我要做的就是获取 df2 的总列并将其放入名为 OtherT 的 df1 的空列中。 'no value' 只是表示该字段是空白的。

我尝试过使用合并

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

我也尝试过使用 join

df1.join(df2, on = 'FUR', how  = 'left')

【问题讨论】:

  • 这能回答你的问题吗? Pandas Merging 101
  • 总是缺少 otherT (如果是这样,为什么还要打扰该列)。如果不是,并且您只想在丢失时更新,则可以修改示例,以便您获得解决此问题的解决方案,而不是在这种特定情况下碰巧工作的一堆其他解决方案。
  • 谢谢大家!感谢您的快速反应。我将查看 Pandas Merging 101。

标签: pandas dataframe vlookup


【解决方案1】:

我知道这是一个老问题,但我今天遇到了同样的问题。 我所做的是使用 apply 来模拟 Excel VLOOKUP 函数,例如:

df1=                      df2=
FUR  Total   otherT          FUR   Total
123    3     no value        123    8
345   -2     no value        345    3
234    6     no value        234   -1

df['otherT'] = df[df.otherT == 'no value']. \
               FUR.apply(lambda x: df2[df2.FUR = x] \                                                         
                        ['Total'].values[0] if len (df2[df2.FUR = x] \                                                         
                        .values) > 0 else 'no value')

仅在 'no value' 行上应用 VLOOKUP

df[df.otherT == 'no value']

而这部分是为了避免在没有发现的情况下出现错误。

if len (df2[df2.FUR = x].values) > 0 else 'no value'

作为 excel VLOOKUP,此函数将获取第一个结果。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-02
    • 1970-01-01
    • 2019-05-20
    • 2020-11-26
    • 1970-01-01
    • 2021-07-02
    • 2021-01-11
    • 1970-01-01
    相关资源
    最近更新 更多