我正在尝试添加新列并根据其他行值设置其值。可以说我们有以下数据框:
df = pd.DataFrame({
'B':[1,2,3,4,5,6],
'C':[7,8,9,4,2,3],
'D':[1,3,5,7,1,0],
})
具有相应的输出
B C D
1 7 1
2 8 3
3 9 5
4 4 7
5 2 1
6 3 0
我想添加一个新列'E',其值如下:
E = df.C值,其中B = B + 2。
例如,E的第一个值应为3(我们选择B = 0 + 2 = 2的行,然后从该行中选择C值)。
我尝试了以下
f['E'] = np.where(f.B == (f['B']+2))['C']
但是它不起作用
答案 0 :(得分:1)
您可以设置B
并建立索引并使用它来映射修改后的数据:
df['E'] = df['B'].add(2).map(df.set_index('B')['C'])
输出:
B C D E
0 0 1 7 3.0
1 1 2 8 4.0
2 2 3 9 5.0
3 3 4 4 6.0
4 4 5 2 NaN
5 5 6 3 NaN