Python 3.x Pandas从count()函数的dataframe aggregate max()返回字符串值
我正在学习熊猫,并努力学习更简单的东西 最终,我希望我的代码只返回“oranges”,因为is在Colour列中出现的值最多 我的索引当前是x列Python 3.x Pandas从count()函数的dataframe aggregate max()返回字符串值,python-3.x,pandas,dataframe,count,max,Python 3.x,Pandas,Dataframe,Count,Max,我正在学习熊猫,并努力学习更简单的东西 最终,我希望我的代码只返回“oranges”,因为is在Colour列中出现的值最多 我的索引当前是x列 X FRUIT COLOR 10 apples green 10 apples red 10 oranges green 10 oranges orange 10 oranges yellow 10 bananas yellow 10 bananas green 我似乎总是返回一个键值对或仅返回.count()数字,并且似
X FRUIT COLOR
10 apples green
10 apples red
10 oranges green
10 oranges orange
10 oranges yellow
10 bananas yellow
10 bananas green
我似乎总是返回一个键值对或仅返回.count()数字,并且似乎无法从聚合结果中仅提取结果列值
下面是我试图解决这个问题的一个代码示例-我已经尝试了很多,但这是最新的一个不起作用的示例:
df['COUNT'] = df.groupby(['FRUIT'])['FRUIT'].transform('SIZE')
copy_df = df
max = copy_df.loc[df['SIZE'] == copy_df['SIZE'].max()]
print(max)
这将返回“AttributeError:“SeriesGroupBy”对象没有属性“SIZE”-我已经尝试过其他方法,但效果更好,但我可以看出我进展不快。我认为您需要在
转换中将大小更改为大小:
df['SIZE'] = df.groupby(['FRUIT'])['FRUIT'].transform('size')
max1 = df.loc[df['SIZE'] == df['SIZE'].max()]
print(max1)
X FRUIT COLOR SIZE
2 10 oranges green 3
3 10 oranges orange 3
4 10 oranges yellow 3
如果需要列的顶部值,请使用索引[0]
,然后使用索引的第一个值,因为输出已排序:
print (df.FRUIT.value_counts())
oranges 3
apples 2
bananas 2
Name: FRUIT, dtype: int64
val = df.FRUIT.value_counts().index[0]
print (val)
oranges
另一种解决方案是使用Aggregate来检查系列的最大值的索引值
:
print (df.groupby('FRUIT')['FRUIT'].size())
FRUIT
apples 2
bananas 2
oranges 3
dtype: int64
val = df.groupby('FRUIT')['FRUIT'].size().idxmax()
print (val)
oranges