分组和排序后:为什么我的 python 数据框列名称行不在一行中?
After grouping and sorting: Why is my python dataframe column name row, not in a single row?
首先,我不确定我这样做是不是最好的方式,所以不胜感激!
我创建了一个 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'])
我现在想分组并排序(根据 'Name' 出现的频率)和 return 前 2 条记录。即以下输出:
Name Count
david 3
calvin 2
我首先添加一个 "Count" 列:
df = pd.DataFrame(raw_data, columns = ['Name','Age'])
给出:
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)
这是我遇到问题的地方,数据是 "correct",但是 headers 列似乎在不同的行中...请参见屏幕截图:
Column Header Alignment problem pic
我有 3 个问题
1) 为什么会这样?
2) 我该如何解决?
3) 有更好的方法吗?
谢谢!
[编辑] - 我已经回答了问题 2(如何修复)。显然我需要重置索引:
df.reset_index()
想知道为什么,有没有更好的方法?
您可以使用 nlargest
and 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
首先,我不确定我这样做是不是最好的方式,所以不胜感激!
我创建了一个 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'])
我现在想分组并排序(根据 'Name' 出现的频率)和 return 前 2 条记录。即以下输出:
Name Count
david 3
calvin 2
我首先添加一个 "Count" 列:
df = pd.DataFrame(raw_data, columns = ['Name','Age'])
给出:
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)
这是我遇到问题的地方,数据是 "correct",但是 headers 列似乎在不同的行中...请参见屏幕截图: Column Header Alignment problem pic
我有 3 个问题
1) 为什么会这样?
2) 我该如何解决?
3) 有更好的方法吗?
谢谢!
[编辑] - 我已经回答了问题 2(如何修复)。显然我需要重置索引:
df.reset_index()
想知道为什么,有没有更好的方法?
您可以使用 nlargest
and 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