如果定义的掩码为true,如何更改特定的列值?

Pan*_*hra 6 dataframe pandas sklearn-pandas

我有一个数据框,我有这些列名称

  • 'TEAM1',
  • 'TEAM2',
  • '市',
  • '日期'.

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

这就是我正在做的事情:

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

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

出现的问题:

'系列'对象是可变的,因此它们不能被散列

我怎样才能做到这一点?

piR*_*red 7

Bracket([])表示法访问__getitem__python对象的方法(如果它有一个方法定义).对于一个pd.DataFrame对象,你可以通过括号传递一个像对象一样的数组df[array_like_object],它会做一些事情

可能性1

# returns a copy of df with columns ['col1', 'col2']
df[['col1', 'col2']]
Run Code Online (Sandbox Code Playgroud)

可能性2

# returns a slice of which rows have corresponding trues in the mask
df[boolean_mask]
Run Code Online (Sandbox Code Playgroud)

跳过其他可能性


你有一个 boolean_mask

((matches['team1']=='mi') & 
 (matches['team2']=='rcb') & 
 (matches['date']=='2014-04-19'))
Run Code Online (Sandbox Code Playgroud)

还有一个 column

'city'
Run Code Online (Sandbox Code Playgroud)

在这种情况下,它loc可以完美地处理
Per @JohnGalt

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