【问题标题】:Incrementing a cell value in pandas dataframe based on multiple column conditions根据多列条件增加熊猫数据框中的单元格值
【发布时间】:2021-08-01 19:28:08
【问题描述】:

我正在尝试根据column_1column_2 中的检查来增加column_3 中的整数值。

  | column_1 | column_2 | column_3
0 |    a     |    x     |    1 
1 |    b     |    y     |    1 
2 |    c     |    z     |    1 

如果column_1 = acolumn_2 = x,我想将column_3 中的值增加1

我尝试了以下方法,但它不起作用 -

df = pd.DataFrame({
    "column_1": ['a', 'b', 'c'], 
    "column_2": ['x', 'y', 'z'],
    "column_3": [1,1,1]
})

df[(df['column_1']=='a') & (df['column_2']=='x')]['column_3'] += 1

在运行上述代码后检查df 输出会得到相同的数据帧。

在 Jupyter 显示警告后,我使用了 .loc,但它仍然不起作用。

df.loc[df.column_1.isin(['a']) & df.column_2.isin(['x'])]['column_3'].iat[0] += 1

我们究竟是如何做到这一点的?

【问题讨论】:

    标签: python pandas dataframe


    【解决方案1】:

    使用DataFrame.loc 是正确的方法,但也必须删除][iat

    df.loc[(df['column_1']=='a') & (df['column_2']=='x'), 'column_3'] += 1
    
    print (df)
      column_1 column_2  column_3
    0        a        x         2
    1        b        y         1
    2        c        z         1
    

    numpy.where 的另一个解决方案:

    df['column_3'] += np.where((df['column_1']=='a') & (df['column_2']=='x'), 1, 0)
    
    print (df)
      column_1 column_2  column_3
    0        a        x         2
    1        b        y         1
    2        c        z         1
    

    【讨论】:

    • 太棒了!!想知道是否还有其他方法可以实现这一目标?或者这是解决我的特定问题的唯一方法?
    • @AmitPathak - 添加了另一个想法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-21
    • 2016-05-17
    • 1970-01-01
    • 2017-04-01
    • 1970-01-01
    • 2017-11-30
    相关资源
    最近更新 更多