this is a rather similar question to this question but with one key difference: I'm selecting the data I want to change not by its index but by some criteria.
If the criteria I apply return a single row, I'd expect to be able to set the value of a certain column in that row in an easy way, but my first attempt doesn't work:
>>> 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
So rather than setting 2009 Sunday's Banana sales to 100, nothing happens! What's the nicest way to do this? Ideally the solution should use the row number, as you normally don't know that in advance!
You can set cell value of pandas dataframe using df.at[row_label, column_label] = 'Cell Value'. It is the fastest method to set the value of the cell of the pandas dataframe.
to_string() to Print DataFrame without Index. You can use DataFrame. to_string(index=False) on the DataFrame object to print.
Pandas replace multiple values in column replace. By using DataFrame. replace() method we will replace multiple values with multiple new strings or text for an individual DataFrame column. This method searches the entire Pandas DataFrame and replaces every specified value.
Many ways to do that
In [7]: d.sales[d.sales==24] = 100 In [8]: d Out[8]: 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 100 2009
In [26]: d.loc[d.sales == 12, 'sales'] = 99 In [27]: d Out[27]: day flavour sales year 0 sat strawberry 10 2008 1 sun strawberry 99 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 100 2009
In [28]: d.sales = d.sales.replace(23, 24) In [29]: d Out[29]: day flavour sales year 0 sat strawberry 10 2008 1 sun strawberry 99 2008 2 sat banana 22 2008 3 sun banana 24 2008 4 sat strawberry 11 2009 5 sun strawberry 13 2009 6 sat banana 24 2009 7 sun banana 100 2009
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With