The key is using groupby, which is so useful that I strongly recommend reading the section of the docs linked there. You can get a Series with the minimum values per person:
>>> df.groupby("Name")["Amount"].min()
Name
person1 1
person2 3
person3 6
Name: Amount, dtype: int64
Or the same information as a DataFrame:
>>> df.groupby("Name", as_index=False)["Amount"].min()
Name Amount
0 person1 1
1 person2 3
2 person3 6
[3 rows x 2 columns]
Or if you really want to add a column to your original dataframe, you can use transform:
>>> df["Minimum_Amount"] = df.groupby("Name")["Amount"].transform('min')
>>> df
Amount Name Minimum_Amount
0 1 person1 1
1 2 person1 1
2 3 person2 3
3 4 person2 3
4 6 person3 6
5 7 person3 6
[6 rows x 3 columns]