学习熊猫并与更简单的东西挣扎..提前感谢您的帮助。
最终我希望我的代码只返回' oranges'因为COLOR列中出现的值最多。
我的索引目前是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()数字,并且似乎不会从聚合结果中提取FRUIT列值。
这是我的一个代码示例试图解决它 - 我尝试了很多,但这是最新的一个不起作用:
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'" - 我有其他尝试有更好的结果,但我可以告诉我问题并没有得到任何快速....再次感谢帮助这个新手!
答案 0 :(得分:1)
我认为您需要在SIZE
中将size
更改为transform
:
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
如果需要列FRUIT
的最高值,请使用value_counts
,然后使用index[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
另一个使用size
与idxmax
进行聚合的解决方案,用于检查Series
的最大值的索引值:
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