【发布时间】:2013-07-17 18:44:18
【问题描述】:
这是一个与this question 相当相似的问题,但有一个关键区别:我不是根据索引而是根据某些标准来选择我想要更改的数据。
如果我应用的条件返回单行,我希望能够以简单的方式设置该行中某一列的值,但我的第一次尝试不起作用:
>>> d = pd.DataFrame({'year':[2008,2008,2008,2008,2009,2009,2009,2009],
... 'flavour':['strawberry','strawberry','banana','banana',
... 'strawberry','strawberry','banana','banana'],
... 'day':['sat','sun','sat','sun','sat','sun','sat','sun'],
... 'sales':[10,12,22,23,11,13,23,24]})
>>> d
day flavour sales year
0 sat strawberry 10 2008
1 sun strawberry 12 2008
2 sat banana 22 2008
3 sun banana 23 2008
4 sat strawberry 11 2009
5 sun strawberry 13 2009
6 sat banana 23 2009
7 sun banana 24 2009
>>> d[d.sales==24]
day flavour sales year
7 sun banana 24 2009
>>> d[d.sales==24].sales = 100
>>> d
day flavour sales year
0 sat strawberry 10 2008
1 sun strawberry 12 2008
2 sat banana 22 2008
3 sun banana 23 2008
4 sat strawberry 11 2009
5 sun strawberry 13 2009
6 sat banana 23 2009
7 sun banana 24 2009
因此,与其将 2009 年周日的香蕉销量设置为 100,不如什么都没有发生!最好的方法是什么?理想情况下,解决方案应该使用行号,因为您通常不会提前知道!
【问题讨论】: