【问题标题】:How to add pandas data frame column based on other rows values如何根据其他行值添加熊猫数据框列
【发布时间】:2023-03-17 14:55:01
【问题描述】:

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

    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']

但它不起作用

【问题讨论】:

    标签: python python-3.x pandas dataframe


    【解决方案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
    

    【讨论】:

    • 谢谢,没想到!
    • 可以添加条件吗?所以它变成:其中 B = B + 2 和 D=value?
    • @user3379482 可能是df[df['D']==value].set_index('B')['C']?
    猜你喜欢
    • 2017-01-14
    • 2020-10-21
    • 1970-01-01
    • 2019-12-09
    • 2017-03-11
    • 1970-01-01
    • 2015-03-10
    • 1970-01-01
    • 2022-12-14
    相关资源
    最近更新 更多