我想基于pandas
df中的另一列替换一列中的值。具体来说,在col B == X
处,我想更改col C
中的值,但要更改给定序列中的最后一个X
。我可以在X's
中更改所有相应的C
。但是我只想替换最后一个有效的X
。 mask
和最后一个有效值在这里是否理想?
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
参考方案
您可以将shift
与numpy.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…