【问题标题】:Finding multiple minimums and adding new column in pandas在熊猫中查找多个最小值并添加新列
【发布时间】:2014-04-02 18:13:07
【问题描述】:

我有一个如下所示的 pandas df

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

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

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    关键是使用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]
    

    【讨论】:

    • 太棒了,这正是我想要的!非常感谢!
    猜你喜欢
    • 2015-09-19
    • 2023-03-10
    • 2021-01-13
    • 2019-07-21
    • 2021-09-29
    • 2016-11-03
    • 1970-01-01
    • 2020-08-09
    • 1970-01-01
    相关资源
    最近更新 更多