【问题标题】:Excel VLOOKUP equivalent in pandas熊猫中的 Excel VLOOKUP 等效项
【发布时间】:2020-04-04 03:29:39
【问题描述】:

我有以下数据框:

               A           B            C
 Index
2001-06-30    100       2001-08-31     (=value of A at date B)
2001-07-31    200       2001-09-30      ...
2001-08-31    300       2001-10-31      ...
2001-09-30    400       2001-11-30      ...

B 列包含来自A 列的日期,这些日期向前移动了一些。我想生成列C,它由A 日期B 的值组成。 (最好在逻辑上 Excel VLOOKUP 公式会做到这一点。我不是在这里简单地寻找shift(-2),因为实际上BIndex 之间的转换并不总是相等的。

我尝试了df.loc['B', 'A'],但这很可能过于简单并产生了错误。

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    我认为你需要map by column A:

    df['C'] = df.B.map(df.A)
    print (df)
                  A          B      C
    Index                            
    2001-06-30  100 2001-08-31  300.0
    2001-07-31  200 2001-09-30  400.0
    2001-08-31  300 2001-10-31    NaN
    2001-09-30  400 2001-11-30    NaN
    

    同理:

    df['C'] = df.B.map(df.A.to_dict())
    print (df)
                  A          B      C
    Index                            
    2001-06-30  100 2001-08-31  300.0
    2001-07-31  200 2001-09-30  400.0
    2001-08-31  300 2001-10-31    NaN
    2001-09-30  400 2001-11-30    NaN
    

    【讨论】:

    • 谢谢@jezrael,一切正常。我想知道为什么这个解决方案在其他地方不容易找到。
    • 难题。也许是因为在 excel 中它的名称与 pandas 不同,但它是相同的 - vlookupmap
    • 如果要查看的列是索引,这将非常有效。如果列不是索引,这将如何工作?查看(要查找的值)和查看列(要获取的值)都是单独的列。
    • @Meet 然后用df.index 代替df.B
    • 对不起@jezrael,我想我的问题不清楚。我需要查看 col2 并将 col3 中的值从 df1 获取到 df2 的 col4 中。这两个dfs都没有涉及索引。那么该怎么做呢?例如,在上面的示例中,假设日期的“索引”是一列而不是索引。在这种情况下,同样的代码可以工作吗?
    猜你喜欢
    • 1970-01-01
    • 2018-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-16
    • 2023-03-21
    • 2020-04-15
    相关资源
    最近更新 更多