我有一个 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 = 相关列
- 返回=坐标(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)
关于python - Pandas 使用来自 df 的值从 df 返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43065811/