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

时间:2016-12-29 18:28:16

标签: pandas dataframe sklearn-pandas

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

  • 'TEAM1',
  • 'TEAM2',
  • '城市',
  • '日期'。

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

这就是我正在做的事情:

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

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

出现的问题:

  

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

我该怎么做?

1 个答案:

答案 0 :(得分:6)

Bracket([])表示法访问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,它可以完全处理 Per @JohnGalt

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