当前位置: 首页 > 面试题库 >

相当于Excel VLOOKUP的熊猫

白星腾
2023-03-14
问题内容

我有以下数据框:

               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,该列由Adate上的column的值组成B。(最好是在逻辑中的Excel
VLOOKUP公式会做到这一点。我不是在寻找简单的shift(-2)这里,是因为在现实之间的转移BIndex并不总是等于)。

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


问题答案:

我认为您需要map按列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


 类似资料:
  • 问题内容: 我知道(其中e是一个异常)会打印发生的异常,但是,我试图找到与Java等效的python,它可以将异常确切地跟踪到发生的那一行,并打印出整个轨迹。 谁能告诉我Python 的等效功能吗? 问题答案: 在块内执行此操作时,它将自动使用当前异常。有关更多信息,请参见http://docs.python.org/library/traceback.html。

  • 问题内容: 我正在使用Java进行编译器设计项目。进行了词法分析(使用jflex),我想知道哪种yacc类工具最适合(最有效,最易用等)进行语法分析,为什么这样做。 问题答案: 如果您特别想要类似YACC的行为(表驱动),那么我所知道的唯一一个就是CUP。 在Java世界中,似乎有更多的人倾向于ANTLR或JavaCC之类的递归下降解析器。 而且效率很少是选择解析器生成器的原因。

  • 问题内容: 具有向量化if / else的语义(类似于Apache Spark的/ DataFrame方法)。我知道我可以在pandas上使用,但通常会定义自己的API来代替原始函数使用,通常使用/更为方便。 果然,我发现了。但是,乍一看,它具有完全不同的语义。我找不到一种方法来重写使用pandas的最基本的示例: 我是否缺少明显的东西?还是将熊猫命名为一个完全不同的用例,尽管名称与相同? 问题答

  • 问题内容: Javascript中有与Java 方法等效的方法吗? 更新1 那么,零延迟会和完全一样吗? 问题答案: 如果要异步运行某些内容( 稍后 ),请尝试 JavaScript是单线程的。如果要在事件处理程序之外运行一些耗时(CPU密集型)的任务,则可以使用上面的技术来执行此操作,但是它仍然会占用事件处理线程(导致UI冻结)。 在浏览器中运行CPU密集型任务通常是一个坏主意(网络工作者可能会

  • 问题内容: 我有一行用于SQL Server的代码,它采用的日期列为“ YYYYMMDD”,其中DD为00,并将00转换为01,以便它与datetime一起使用。我希望能够使用MySQL 当前适用于SQL Server的代码: 但是isdate在MySQL中无效,该怎么解决? 问题答案: 您可以尝试使用STR_TO_DATE函数。如果表达式不是日期,时间或日期时间,则返回。

  • 问题内容: 我有这个装饰器: 该代码仅能在linux上执行任何操作,就像在Windows上一样。在Windows中也可以使用此代码的最简单方法是什么? 问题答案: 它不是很漂亮,但是我不得不以跨平台的方式做类似的事情,于是我想到了使用单独的线程。基于信号的系统无法在所有平台上可靠地工作。 此类的使用可以包装在装饰器中,也可以制成上下文处理程序。 YMMV。