首页 > 解决方案 > Pandas 用于部分重复的行,保留行并用最小值或最大值替换数据

问题描述

这是我最初的数据框的样子:

pd.DataFrame({'a':['a','b','b','c'],
             'b': [1,2,3,4],
             'c': [2,3,4,1],'d':[1.1,1.2,1.3,1.4]})

    a   b   c   d

0   a   1   2   1.1

1   b   2   3   1.2

2   b   3   4   1.3

3   c   4   1   1.4

对于 a 列中的重复值我想保留b列的最小值和c列的最大值

输出应该是这样的:


    a   b   c   d

0   a   1   2   1.1

1   b   2   4   1.2

2   b   2   4   1.3

3   c   4   1   1.4

有没有这样做的熊猫功能?我试着调查

pandas.DataFrame.drop_duplicates
pandas.DataFrame.duplicated 

但是,我没有找到适合我的用例的任何东西。

标签: pythonpandasdataframe

解决方案


使用GroupBy.transformwithminmaxwhat 为唯一组返回相同的值:

df = pd.DataFrame({'a':['a','b','b','c'],
             'b': [1,2,3,4],
             'c': [2,3,4,1],'d':[1.1,1.2,1.3,1.4]})

df['b'] = df.groupby('a')['b'].transform('min')
df['c'] = df.groupby('a')['c'].transform('max')
print (df)
   a  b  c    d
0  a  1  2  1.1
1  b  2  4  1.2
2  b  2  4  1.3
3  c  4  1  1.4

推荐阅读