我有一个df:
Index ColA ColB ... Marker1 Marker2 Return
t0 a0 b0 ... t0 colA a0
t1 a1 b1 ... t1 colB b1
t2 a2 b2 ... t1 colZ z1
t3 a3 b3 ... t3 colB b3
如何获得“通过广播返回”专栏?逻辑是:
标记1 =相关索引
标记2 =相关列
Return =坐标中的值(Marker1,Marker2)
最佳答案
使用pd.DataFrame.lookup
df.assign(Return2=df.lookup(df.Marker1, df.Marker2))
ColA ColB ColZ Marker1 Marker2 Return Return2
Index
t0 a0 b0 z0 t0 ColA a0 a0
t1 a1 b1 z1 t1 ColB b1 b1
t2 a2 b2 z2 t1 ColZ z1 z1
t3 a3 b3 z3 t3 ColB b3 b3
设定
from io import StringIO
import pandas as pd
txt = """Index ColA ColB ColZ ... Marker1 Marker2 Return
t0 a0 b0 z0 ... t0 ColA a0
t1 a1 b1 z1 ... t1 ColB b1
t2 a2 b2 z2 ... t1 ColZ z1
t3 a3 b3 z3 ... t3 ColB b3"""
df = pd.read_csv(StringIO(txt), delim_whitespace=True, index_col=0).drop('...', 1)