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

时间:2017-04-03 14:50:04

标签: python pandas dataframe

我有以下假定的数据框

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

列F表示数据帧的列。 对于列F的每一行,我想从数据帧的其余部分找到相关的行和列,并将值返回到一列

结果将如下所示:

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 

我能够使用以下内容识别每个案例,但不确定如何在整个数据框架中执行此操作。

test.loc[test.iloc[:,5]==a,test.columns==a]

非常感谢提前。

1 个答案:

答案 0 :(得分:6)

您可以使用lookup

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

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