我有以下数据框:
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),因为实际上B
和Index
之间的转换并不总是相等的。
我试过df.loc['B', 'A']
,但这很可能是简单化并产生错误。
答案 0 :(得分:15)
我认为您需要A
列map
:
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