groupby - python pandas 数据框
groupby - python pandas dataframe
我有一个包含列 date
、name
、id
的数据框(数据是多余的)。
现在我想获得组合的频率(date
,name
,id
)
为此,我在我的数据框上应用 groupby
:
df.groupby(['date','uname','id']).size()
给我的结果如下:
date uname id size
2016-02-11 a@abc.com 111 1
b@abc.com 1080 2
ar@ata.com 5315 1
5317 1
aru628@gmail.com 536 2
2-16-02-12 ch45@gmail.com 588 1
593 2
doy5@gmail.com 322 1
但我希望我的结果是这样的:
date uname id size
2016-02-11 a@abc.com 111 1
2016-02-11 b@abc.com 1080 2
2016-02-11 ar@ata.com 5315 1
2016-02-11 ar@ata.com 5317 1
2016-02-11 aru628@gmail.com 536 2
2-16-02-12 ch45@gmail.com 588 1
2-16-02-12 ch45@gmail.com 593 2
2-16-02-12 doy5@gmail.com 322 1
感谢建议
你需要reset_index
:
df.groupby(['date','uname','id']).size().reset_index()
date uname id size
0 2016-02-11 a@abc.com 111 1
1 2016-02-11 b@abc.com 1080 2
2 2016-02-11 ar@ata.com 5315 1
3 2016-02-11 ar@ata.com 5317 1
4 2016-02-11 aru628@gmail.com 536 2
5 2-16-02-12 ch45@gmail.com 588 1
6 2-16-02-12 ch45@gmail.com 593 2
7 2-16-02-12 doy5@gmail.com 322 1
我有一个包含列 date
、name
、id
的数据框(数据是多余的)。
现在我想获得组合的频率(date
,name
,id
)
为此,我在我的数据框上应用 groupby
:
df.groupby(['date','uname','id']).size()
给我的结果如下:
date uname id size
2016-02-11 a@abc.com 111 1
b@abc.com 1080 2
ar@ata.com 5315 1
5317 1
aru628@gmail.com 536 2
2-16-02-12 ch45@gmail.com 588 1
593 2
doy5@gmail.com 322 1
但我希望我的结果是这样的:
date uname id size
2016-02-11 a@abc.com 111 1
2016-02-11 b@abc.com 1080 2
2016-02-11 ar@ata.com 5315 1
2016-02-11 ar@ata.com 5317 1
2016-02-11 aru628@gmail.com 536 2
2-16-02-12 ch45@gmail.com 588 1
2-16-02-12 ch45@gmail.com 593 2
2-16-02-12 doy5@gmail.com 322 1
感谢建议
你需要reset_index
:
df.groupby(['date','uname','id']).size().reset_index()
date uname id size
0 2016-02-11 a@abc.com 111 1
1 2016-02-11 b@abc.com 1080 2
2 2016-02-11 ar@ata.com 5315 1
3 2016-02-11 ar@ata.com 5317 1
4 2016-02-11 aru628@gmail.com 536 2
5 2-16-02-12 ch45@gmail.com 588 1
6 2-16-02-12 ch45@gmail.com 593 2
7 2-16-02-12 doy5@gmail.com 322 1