熊猫找到特定值并从下一列获取值

时间:2020-03-26 07:41:34

标签: python-3.x pandas

我有一个看起来像这样的大数据框

A         B         C        
1.2       11.1      42.1     
2.4       12.3      32.4            
3.1       32.4      21.7
5.8       42.1
7.3       6.8
8.9       9.21
9.1       10.2
10.1      21.7

我想在B列中找到C值,并获取它对应的A值,如下所示

A         B         C        D
1.2       11.1      42.1     5.8
2.4       12.3      32.4     3.1    
3.1       32.4      21.7     10.1
5.8       42.1
7.3       6.8
8.9       9.21
9.1       10.2
10.1      21.7

谢谢

1 个答案:

答案 0 :(得分:2)

使用Series.map,但在B列中是必需的唯一值:

df['D'] = df['C'].map(df.set_index('B')['A'])
print (df)
      A      B     C     D
0   1.2  11.10  42.1   5.8
1   2.4  12.30  32.4   3.1
2   3.1  32.40  21.7  10.1
3   5.8  42.10   NaN   NaN
4   7.3   6.80   NaN   NaN
5   8.9   9.21   NaN   NaN
6   9.1  10.20   NaN   NaN
7  10.1  21.70   NaN   NaN

如果不是唯一的,请获取:

“ InvalidIndexError:重新索引仅对具有唯一值的索引对象有效”

然后使用:

df['D'] = df['C'].map(df.drop_duplicates('B').set_index('B')['A'])