12

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

  • '团队 1',
  • '团队 2',
  • '城市',
  • '日期'。

我想要做的是在满足某些条件时将“城市”的值指定为“迪拜”(我使用掩码定义)。

这就是我正在做的事情:

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

当满足上述所有条件时,我想将“城市”(现在为空)中的值更改为“迪拜”

出现的问题:

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

我怎样才能做到这一点?

4

1 回答 1

16

括号 ( []) 表示法访问__getitem__python 对象的方法(如果它定义了方法)。对于一个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'
于 2016-12-29T19:02:28.253 回答