我有一个数据框,我有这些列名
我想要做的是在特定条件满足时(我使用蒙版定义)将'city'的值指定为'dubai'。
这就是我正在做的事情:
matches[((matches['team1']=='mi') & (matches['team2']=='rcb') & (matches['date']=='2014-04-19')),'city']='Dubai'
当满足以上所有条件时,我想将'city'(现在为null)中的值更改为'Dubai'
出现的问题:
'系列'对象是可变的,因此它们不能被散列
我该怎么做?
答案 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'