Python 2.7.11 // Pandas 0.18.1
我有一个组成的数据集(csv)来练习一个有250个项目的虚构酒类商店。这些专栏涵盖'啤酒厂','标签','年','商品价格','建议零售价','供应商价格'等等。但是对于这个问题,相关的部分是啤酒厂和商店价格(结账时查询的当前价格)。
Brewery Store Price
104 Glenfiddich 109.99
105 Glenfiddich 89.99
108 Glenfiddich 114.99
110 Glenfiddich 99.99
119 Glenfiddich 169.99
如果我在Glenfiddich进行销售,我可以找到Glenfiddich项目,如下所示:
df = pd.read_csv('liquorStore.csv')
df.Brewery.str.contains('Glenfiddich')
我知道如何找到Glenfiddich产品,但我不知道如何更改数据框中行的值。例如,我想:
注意:我这样做是为了练习 pandas 。
答案 0 :(得分:2)
您可以loc
使用boolean indexing
进行选择,然后使用0.9
进行多次采访:
df.loc[df.Brewery == 'Glenfiddich', 'Store Price'] *= .9
样品:
print (df)
Brewery Store Price
104 Glenfiddich 109.99
105 Glenfiddich 89.99
120 Another 100.00
df.loc[df.Brewery == 'Glenfiddich', 'Store Price'] *= .9
print (df)
Brewery Store Price
104 Glenfiddich 98.991
105 Glenfiddich 80.991
120 Another 100.000
另一种可能的解决方案是使用mask
:
df['Store Price'] = df['Store Price'].mask(df.Brewery == 'Glenfiddich',
df['Store Price'] * .9)
print (df)
Brewery Store Price
104 Glenfiddich 98.991
105 Glenfiddich 80.991
120 Another 100.000