Python(Pandas) - 通过将列的值与数据帧匹配来创建列

pbo*_*bou 2 python dataframe pandas

我有以下假定的数据帧

a       b       c       d       e       F
0.02    0.62    0.31    0.67    0.27    a
0.30    0.07    0.23    0.42    0.00    a
0.82    0.59    0.34    0.73    0.29    a
0.90    0.80    0.13    0.14    0.07    d
0.50    0.62    0.94    0.34    0.53    d
0.59    0.84    0.95    0.42    0.54    d
0.13    0.33    0.87    0.20    0.25    d
0.47    0.37    0.84    0.69    0.28    e
Run Code Online (Sandbox Code Playgroud)

列F表示数据帧的列.对于列的每一行,FI希望从数据帧的其余部分查找相关的行和列,并将值返回到一列

结果将如下所示:

a       b       c       d       e       f   To_Be_Filled
0.02    0.62    0.31    0.67    0.27    a   0.02 
0.30    0.07    0.23    0.42    0.00    a   0.30 
0.82    0.59    0.34    0.73    0.29    a   0.82 
0.90    0.80    0.13    0.14    0.07    d   0.14 
0.50    0.62    0.94    0.34    0.53    d   0.34 
0.59    0.84    0.95    0.42    0.54    d   0.42 
0.13    0.33    0.87    0.20    0.25    d   0.20 
0.47    0.37    0.84    0.69    0.28    e   0.28 
Run Code Online (Sandbox Code Playgroud)

我能够通过以下方式识别每个案例,但不确定如何在整个数据框架中执行此操作.

test.loc[test.iloc[:,5]==a,test.columns==a]
Run Code Online (Sandbox Code Playgroud)

提前谢谢了.

ayh*_*han 6

您可以使用查找:

df['To_Be_Filled'] = df.lookup(np.arange(len(df)), df['F'])
df
Out: 
      a     b     c     d     e  F  To_Be_Filled
0  0.02  0.62  0.31  0.67  0.27  a          0.02
1  0.30  0.07  0.23  0.42  0.00  a          0.30
2  0.82  0.59  0.34  0.73  0.29  a          0.82
3  0.90  0.80  0.13  0.14  0.07  d          0.14
4  0.50  0.62  0.94  0.34  0.53  d          0.34
5  0.59  0.84  0.95  0.42  0.54  d          0.42
6  0.13  0.33  0.87  0.20  0.25  d          0.20
7  0.47  0.37  0.84  0.69  0.28  e          0.28
Run Code Online (Sandbox Code Playgroud)

np.arange(len(df))可以替换为df.index.