当定义的掩码为真时如何更改特定列值?

How to change particular column value when defined mask is true?

我有一个数据框,其中包含这些列名

我想做的是在满足特定条件(我使用掩码定义)时将 'city' 的值分配为 'dubai'。

这正是我正在做的事情:

 matches[((matches['team1']=='mi') & (matches['team2']=='rcb') & (matches['date']=='2014-04-19')),'city']='Dubai'

当满足上述所有条件时,我想将 'city'(现在为空)中的值更改为 'Dubai'

出现的问题:

'Series' objects are mutable, thus they cannot be hashed

我该怎么做?

括号 ([]) 表示法访问 python 对象的 __getitem__ 方法(如果它定义了方法)。对于 pd.DataFrame 对象,您可以通过方括号 df[array_like_object] 传递类似对象的数组,它会执行以下操作之一

可能性1

# returns a copy of df with columns ['col1', 'col2']
df[['col1', 'col2']]

可能性2

# returns a slice of which rows have corresponding trues in the mask
df[boolean_mask]

跳过其他可能性


你有一个boolean_mask

((matches['team1']=='mi') & 
 (matches['team2']=='rcb') & 
 (matches['date']=='2014-04-19'))

还有一个column

'city'

在这种情况下,它非常适合 loc,它可以完全处理
根据@JohnGalt

matches.loc[
    ((matches['team1']=='mi') &
     (matches['team2']=='rcb') &
     (matches['date']=='2014-04-19')),
    'city'
] = 'Dubai'