求多个极小值并在pandas中添加新列

2024-05-20 20:46:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个熊猫df,看起来像下面这样

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

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


Tags: 方法namedataframedf金额amountpdperson1
1条回答
网友
1楼 · 发布于 2024-05-20 20:46:38

关键是使用^{},这非常有用,因此我强烈建议阅读链接在那里的文档部分。您可以得到一个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]

相关问题 更多 >