每个名称每行仅保留最低值

时间:2015-07-18 13:25:36

标签: select pandas dataframe

我有一个pandas数据帧如下:

Name    Value
A       1
A       2
B       3
B       5
C       1

我只想保留那些值最低的行,但每个名称。

所以结果应该是这样的:

Name    Value
A       1
B       3
C       1

如何做到这一点?

2 个答案:

答案 0 :(得分:1)

您可以将groupbyidxmin

一起使用
import pandas as pd

# your data
# =======================
df

  Name  Value
0    A      1
1    A      2
2    B      3
3    B      5
4    C      1

# processing
# =======================
df.groupby('Name', as_index=False).apply(lambda g: g.loc[g.Value.idxmin()])


  Name  Value
0    A      1
1    B      3
2    C      1

答案 1 :(得分:1)

.min()之后使用groupbyreset_index()是可选的。如果您不使用,Name列将位于索引

 df_grouped = df.groupby('Name').min().reset_index() 
 df_grouped
     Name  Value
0    A      1
1    B      3
2    C      1