假设我有这个DF:
s1 = pd.Series([1,1,2,2,2,3,3,3,4])
s2 = pd.Series([10,20,10,5,10,7,7,3,10])
s3 = pd.Series([0,0,0,0,1,1,0,2,0])
df = pd.DataFrame([s1,s2,s3]).transpose()
df.columns = ['id','qual','nm']
df
id qual nm
0 1 10 0
1 1 20 0
2 2 10 0
3 2 5 0
4 2 10 1
5 3 7 1
6 3 7 0
7 3 3 2
8 4 10 0
我想得到一个新的DF,其中没有重复的id,因此应该有4行id为1,2,3,4。应该保留的行应该根据以下标准选择:取nm最小的一行,如果相等,取qual最大的一行,如果仍然相等,只选择一行。 我想我的代码应该是这样的:
df.groupby('id').apply(lambda x: ???)
它应该返回:
id qual nm
0 1 20 0
1 2 10 0
2 3 7 0
3 4 10 0
但不确定我的函数应该接受什么并返回什么。
或者有更简单的方法?
谢谢
使用-
输出
使用^{} 和^{} 表示每个组的最小行数,然后使用^{} 表示最大值和last if still dups将它们删除:
相关问题 更多 >
编程相关推荐