我有一个pandas数据帧如下:
Name Value
A 1
A 2
B 3
B 5
C 1
我只想保留那些值最低的行,但每个名称。
所以结果应该是这样的:
Name Value
A 1
B 3
C 1
如何做到这一点?
答案 0 :(得分:1)
您可以将groupby
与idxmin
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()
之后使用groupby
。 reset_index()
是可选的。如果您不使用,Name
列将位于索引
df_grouped = df.groupby('Name').min().reset_index()
df_grouped
Name Value
0 A 1
1 B 3
2 C 1