I want a DataFrame where the top rows of one column (called 'cat') have value "LOW", the mid and bottom parts of the frame will have values "MID" and "HI". So, for a frame of 1,200 rows, the value counts for the `cat` columns should result in:

```
LOW    400
MID    400
HI     400

```

This should be easy. But, apparently it is not really. To no avail I tried to select and change the bottom rows using `df.loc[-400:,["cat"]] = "HI"` 

But, this approach does work for the top-rows: `df.loc[:399,["cat"]] = "LOW"`

The sample below shows a working example, and note that it requires both `loc` and `iloc`. Is this where pandas can improve?

```
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.random([1200, 4]), columns=['A', 'B', 'C', 'D'])
df["cat"] = "MID"
df.loc[:399,["cat"]] = "LOW"
df.iloc[-400:,-1] = "HI"  # The -1 selects the last column ('cat') - not ideal.
df.cat.value_counts()

```