替换值最后一个有效项-熊猫 - python

我想基于pandas df中的另一列替换一列中的值。具体来说,在col B == X处,我想更改col C中的值,但要更改给定序列中的最后一个X。我可以在X's中更改所有相应的C。但是我只想替换最后一个有效的Xmask和最后一个有效值在这里是否理想?

X's以随机顺序和分组出现

df = pd.DataFrame({   
    'A' : [1,1,1,1,1,1,1,1],             
    'B' : ['X','X','X','D','A','A','X','D'],                 
    'C' : [1,1,1,1,1,1,1,1],                
    })

df.loc[df['B'] == 'X', ['C']] = 'str'

mask = df['B'] == 'X'

预期输出:

   A  B    C
0  1  X    1
1  1  X    1
2  1  X  str
3  1  D    1
4  1  A    1
5  1  A    1
6  1  X  str
7  1  D    1

参考方案

您可以将shiftnumpy.where一起使用

import numpy as np

b1 = df["B"].shift(-1) 
df["C"] = np.where((df["B"]=="X") & (b1!="X"), "str" , df["C"])

输出:

    A   B   C
0   1   X   1
1   1   X   1
2   1   X   str
3   1   D   1
4   1   A   1
5   1   A   1
6   1   X   str
7   1   D   1

熊猫:从SettingWithCopyWarning到loc和iloc - python

我试着做:input1['Signature_Fixed'] = 'NONE' i = 0 for row in input1['Signature']: if (row == 'Competitor'): input1['Signature_Fixed'][…

熊猫-保留与其他数据框中两个单元格匹配的行 - python

我有一个像这样的数据框df: trial id run rt acc 0 1 1 1 0.941836 1 1 2 1 1 0.913791 1 2 3 1 1 0.128986 1 3 4 1 1 0.155720 0 4 1 1 2 0.414175 0 5 2 1 2 0.699326 1 6 3 1 2 0.781877 1 7 4 1 2 0.55…

熊猫:根据单独列的值更新多个列和行 - python

我正在尝试创建一个代码,该代码可以根据ID列的值尽快更新大量的熊猫值。我正在使用atm的代码在一个ID_column的基础上同时插入多行,但是无法同时插入多列+行。下面的代码是一个简化示例,该示例根据列名ID的值更新2列(值1和值2)。id_list = [24,26,28] value1_list =[100,200,300] value2_list =[…

熊猫:根据其他列的值有条件地替换值 - python

我有一个数据框(df),如下所示: environment event time 2017-04-28 13:08:22 NaN add_rd 2017-04-28 08:58:40 NaN add_rd 2017-05-03 07:59:35 test add_env 2017-05-03 08:05:14 prod add_env ... 现在,我的目标…

在返回'Response'(Python)中传递多个参数 - python

我在Angular工作,正在使用Http请求和响应。是否可以在“响应”中发送多个参数。角度文件:this.http.get("api/agent/applicationaware").subscribe((data:any)... python文件:def get(request): ... return Response(seriali…