我有一个数据库,其中有多个列和行。我想要找到满足某些列的子集的特定条件的行,并且如果它满足该条件,则更改该行中不同列的值。
我正在使用以下数据库进行原型制作。
df = pd.DataFrame([[1, 2], [4, 5], [5, 5], [5, 9], [55, 55]], columns=['max_speed', 'shield'])
df['frcst_stus'] = 'current'
df
这将产生以下结果:
max_speed shield frcst_stus
0 1 2 current
1 4 5 current
2 5 5 current
3 5 9 current
4 55 55 current
我想将索引行2更改为5、5、'hello'而不更改数据框的其余部分。
我可以按照Pandas.loc文档中设置值的示例来完成。我可以设置一个行、一列和符合可调用条件的行。但是这个调用是在单个列或系列上进行的。我需要两个。
我已经找到了许多stackoverflow答案,这些答案使用loc在单个列上设置第二列的值。这不是我的问题。我想搜索两列数据。
下面的代码允许我获取所需的行:
result = df[(df['shield'] == 5) & (df['max_speed'] == 5) & (df['frcst_stus'] == 'current')]
我知道仅仅改变等号符号(== 'current')为(= 'current')会导致错误。
当我选择两列时,我可以设置这些列(如下所示),但是两列都会被设置。('arghh') 当我尝试测试'max_speed'的值时,我得到一个 false is not in index 错误。
df.loc[:, ['max_speed', 'frcst_stus']] = 'hello'
我尝试解释Python布尔问题时也遇到了错误。坦白地说,我还没有完全理解重载的整个概念。