Python 熊猫:如何删除重复行,但保留所有行的最大值
如何删除重复行,但保留所有行的最大值。例如,我有一个包含4行的数据帧:Python 熊猫:如何删除重复行,但保留所有行的最大值,python,python-3.x,pandas,dataframe,pandas-groupby,Python,Python 3.x,Pandas,Dataframe,Pandas Groupby,如何删除重复行,但保留所有行的最大值。例如,我有一个包含4行的数据帧: data = [{'a': 1, 'b': 2, 'c': 3},{'a': 7, 'b': 10, 'c': 2}, {'a': 7, 'b': 2, 'c': 20}, {'a': 7, 'b': 2, 'c': 20}] df = pd.DataFrame(data) 从这个数据框中,我希望有一个数据框,如(3行,按“a”分组,将所有具有最大值的行保留在“c”中): 您可以使用groupby和transform计算每
data = [{'a': 1, 'b': 2, 'c': 3},{'a': 7, 'b': 10, 'c': 2}, {'a': 7, 'b': 2, 'c': 20}, {'a': 7, 'b': 2, 'c': 20}]
df = pd.DataFrame(data)
从这个数据框中,我希望有一个数据框,如(3行,按“a”分组,将所有具有最大值的行保留在“c”中):
您可以使用
groupby
和transform
计算每组的max
c,然后在记录等于max的位置进行筛选,如:
df['max_c'] = df.groupby('a')['c'].transform('max')
df[df['c']==df['max_c']].drop(['max_c'], axis=1)
您可以将
GroupBy
+transform
与布尔索引一起使用:
res = df[df['c'] == df.groupby('a')['c'].transform('max')]
print(res)
a b c
0 1 2 3
1 7 2 20
2 7 2 20
非常感谢。我将第二个命令替换为df=df.loc[df['c']==df['max_c']],然后它就可以工作了。欢迎!如果答案解决了问题,就接受它。
res = df[df['c'] == df.groupby('a')['c'].transform('max')]
print(res)
a b c
0 1 2 3
1 7 2 20
2 7 2 20