I've a pandas dataframe similar to the one below with mixed columns data types (strings, datatime, integers) what I wanted to do was filtering the rows to get the last record by date of the combination of Company and Model.

I've searched among many filtering / groupby solution what I was able to get were the rows I needed but many columns were missing (see the groupby below). I've read about the nuisance of columns in pandas, I tried using groupby to generate a mask to use in the original dataframe but I failed. I don't know how to proceed to have the same result but with all the original columns.

```py
data = {'Company': ['Mercedes', 'Fiat', 'Ferrari', 'Mercedes', 'Volkswagen'],
        'Model': ['Class A', 'Punto', 'GTO', 'Class A', 'Polo'],
        'User': ['Mario', 'Paolo', 'Filippo', 'Andrea', 'Giuseppe'],
        'Rented on': ['2017-04-02', '2017-05-01', '2017-05-22', '2017-08-01', '2017-08-02'],
        'Kms': [2200, 3000, 110, 2400, 3000]
        }

df = pd.DataFrame(data)
print df.groupby(['Company', 'Model'])['Rented on'].last().reset_index()

```

```py
# What I have
      Company   Kms    Model   Rented on      User
0    Mercedes  2200  Class A  2017-04-02     Mario
1        Fiat  3000    Punto  2017-05-01     Paolo
2     Ferrari   110      GTO  2017-05-22   Filippo
3    Mercedes  2400  Class A  2017-08-01    Andrea
4  Volkswagen  3000     Polo  2017-08-02  Giuseppe
# What I get
      Company    Model   Rented on
0     Ferrari      GTO  2017-05-22
1        Fiat    Punto  2017-05-01
2    Mercedes  Class A  2017-08-01
3  Volkswagen     Polo  2017-08-02
# What I want
      Company   Kms    Model   Rented on      User
0        Fiat  3000    Punto  2017-05-01     Paolo
1     Ferrari   110      GTO  2017-05-22   Filippo
2    Mercedes  2400  Class A  2017-08-01    Andrea
3  Volkswagen  3000     Polo  2017-08-02  Giuseppe

```