首页 > 解决方案 > 如何根据其他行值添加熊猫数据框列

问题描述

我正在尝试添加一个新列并根据其他行值设置其值。假设我们有以下数据框:

    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 value where B = B + 2。
例如,E的第一个值应该是3(我们选择B = 0的行+2 = 2,然后从该行中选择 C ​​值)。我尝试了以下

    f['E'] = np.where(f.B == (f['B']+2))['C']

但它不工作

标签: pythonpython-3.xpandasdataframe

解决方案


您可以设置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

推荐阅读