查找多个最小值并在pandas中添加新列

时间:2014-04-02 18:13:07

标签: python pandas

我有一个看起来像下面的pandas df

df = pd.DataFrame({'Amount': [1,2,3,4,6,7],
                'Name': ['person1', 'person1' ,'person2'     ,'person2','person3','person3'],})

我要做的是创建第三列,显示每个人的最低金额。最有效的方法是什么?

1 个答案:

答案 0 :(得分:2)

关键是使用groupby,这非常有用,我强烈建议您阅读那里链接的文档部分。您可以获得具有每人最低值的Series

>>> df.groupby("Name")["Amount"].min()
Name
person1    1
person2    3
person3    6
Name: Amount, dtype: int64

或与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]

或者,如果您确实要在原始数据框中添加列,可以使用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]