分组和排序后:为什么我的python数据框列名是行,而不是一行?
首先,我不确定我这样做是最好的方式,所以我很感激 我创建了一个python数据框架:分组和排序后:为什么我的python数据框列名是行,而不是一行?,python,sorting,pandas,grouping,Python,Sorting,Pandas,Grouping,首先,我不确定我这样做是最好的方式,所以我很感激 我创建了一个python数据框架: raw_data={'Name':pd.系列(['david','andrew','calvin','david','calvin','david','david','index='a','b','c','d','e','f']),'Age':pd.系列([35,40,5,35,35],index=[a','b','c','d','e','f']) df=pd.DataFrame(原始数据,列=['Name',
raw_data={'Name':pd.系列(['david','andrew','calvin','david','calvin','david','david','index='a','b','c','d','e','f']),'Age':pd.系列([35,40,5,35,35],index=[a','b','c','d','e','f'])
df=pd.DataFrame(原始数据,列=['Name','Age'])
我现在要分组,还要排序(基于“Name”出现次数的频率)并返回前2条记录。即以下输出:
Name Count
david 3
calvin 2
我首先添加一个“计数”列:
给出:
Name Age Count
a david 35 3
b andrew 39 1
c calvin 5 2
d david 34 3
e calvin 5 2
f david 35 3
然后,我可以使用以下代码对其进行分组和排序:
df[['Name','Count']].groupby('Name').count().sort_values('Count',ascending=0).head(2)
这就是我的问题所在,数据是“正确的”,但列标题似乎在单独的行中…请参见屏幕截图:
我有三个问题
1) 为什么会发生这种情况
2) 我怎样才能修好它
3) 有更好的方法吗
谢谢
[编辑]-我已经回答了问题2(如何修复)。显然,我需要重置索引:
df.reset_index()
我很想知道,为什么还有更好的方法 您可以使用和:
在代码上调用
reset\u index()
有什么问题吗?没有。。。我只是没有意识到我需要。。。只是想知道为什么索引在第一时间被更改?您的索引被设置为groupby和聚合列,这是预期的operationOK。谢谢这很有帮助。
df.reset_index()
print df
# Name Age
#a david 35
#b andrew 40
#c calvin 5
#d david 35
#e calvin 5
#f david 35
df1 = df.groupby('Name').apply(len)
print df1
#Name
#andrew 1
#calvin 2
#david 3
#dtype: int64
print df1.nlargest(2).reset_index(name='Count')
# Name Count
#0 david 3
#1 calvin 2