a = [['John', 'Mary', 'John'], [10,22,50]])
df1 = pd.DataFrame(a, columns=['Name', 'Count'])
给出这样的数据框,我想将“ Name”的所有相似字符串值与“ Count”值进行比较以确定最高值。我不确定如何在Python的数据框中执行此操作。
例如:在上述情况下,答案是:
John 10的较低值已被删除(基于“名称”的相同值,我只想看到“计数”的最大值)。
在SQL中,它将类似于Select Case查询(其中,我选择Name == Name&Count> Case进行递归计数以确定最高编号),或者为每个名称创建一个For循环,但是据我所知由于对象的性质,DataFrames是一个坏主意。
是否可以使用Python中的DF执行此操作?我可以为每个变量创建一个新的数据框(一个只有John,然后获得最高值(df.value()[:1]或类似值。)但是由于我有数百个唯一条目,这似乎是一个糟糕的解决方案。 :D
答案 0 :(得分:1)
sort_values
和drop_duplicates
,
df1.sort_values('Count').drop_duplicates('Name', keep='last')
Name Count
1 Mary 22
2 John 50
或者像miradulo所说的,groupby
和max
。
df1.groupby('Name').Count.max().reset_index()
Name Count
0 John 50
1 Mary 22