Excel中的Excel VLOOKUP等效于pandas

时间:2016-07-10 12:33:42

标签: python pandas

我有以下数据框:

               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列组成的列date B。 (最好在逻辑上,excel VLOOKUP公式会这样做。我不是在这里寻找简单的shift(-2),因为实际上BIndex之间的转换并不总是相等的。

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

1 个答案:

答案 0 :(得分:15)

我认为您需要Amap

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