分组和排序之后:为什么我的python dataframe列名是行而不是一行?

2024-09-28 20:51:23 发布

您现在位置:Python中文网/ 问答频道 /正文

首先,我不确定我这样做是不是最好的方式,所以其他选择是值得赞赏的!在

python创建了一个pandas框架: raw_data = {'Name' : pd.Series(['david','andrew','calvin','david','calvin','david'], index=['a', 'b', 'c', 'd','e','f']),'Age' : pd.Series([35, 40, 5, 35, 5, 35], index=['a', 'b', 'c', 'd', 'e','f'])} df = pd.DataFrame(raw_data, columns = ['Name','Age'])

我现在想要groupby和sort(基于'Name'出现次数的频率),并返回前2个记录。即以下输出:

  Name Count
david      3
calvin     2

我首先添加一个“Count”列:

^{pr2}$

给出:

     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)

这就是我遇到问题的地方,数据是“正确的”,但列标题似乎在单独的行中…请参见屏幕截图: Column Header Alignment problem pic

我有三个问题

1)为什么会发生这种情况?在

2)如何修复?在

3)有更好的方法吗?在

谢谢!在

[编辑]-我已经回答了问题2,(如何修复它)。显然我需要重置索引:

df.reset_index()

很想知道,为什么还有更好的方法吗?在


Tags: 方法namedfagedataindexrawcount
1条回答
网友
1楼 · 发布于 2024-09-28 20:51:23

您可以使用^{}^{}

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

相关问题 更多 >