将MultiIndex DataFrame转换为Series [英] Convert MultiIndex DataFrame to Series
本文介绍了将MultiIndex DataFrame转换为Series的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我通过以下方式创建了multiIndex DataFrame:
I created a multiIndex DataFrame by:
df.set_index(['Field1', 'Field2'], inplace=True)
如果这不是multiIndex DataFrame,请告诉我如何制作.
If this is not a multiIndex DataFrame please tell me how to make one.
我要:
- 按索引中相同的列分组
- 汇总每个组的数量
- 然后以Field1和Field2作为索引将整个事物返回为Series
我该怎么做?
其他信息
我有一个如下所示的multiIndex dataFrame:
I have a multiIndex dataFrame that looks like this:
Continent Sector Count
Asia 1 4
2 1
Australia 1 1
Europe 1 1
2 3
3 2
North America 1 1
5 1
South America 5 1
如何将其作为索引为[Continent,Sector]的系列返回
How can I return this as a Series with the index of [Continent, Sector]
推荐答案
我认为您需要 size
:
I think you need groupby
with aggregate size
:
df = pd.DataFrame({'Field1':[1,1,1],
'Field2':[4,4,6],
'C':[7,8,9],
'D':[1,3,5],
'E':[5,3,6],
'F':[7,4,3]})
df.set_index(['Field1', 'Field2'], inplace=True)
print (df)
C D E F
Field1 Field2
1 4 7 1 5 7
4 8 3 3 4
6 9 5 6 3
print (df.index)
MultiIndex(levels=[[1], [4, 6]],
labels=[[0, 0, 0], [0, 0, 1]],
names=['Field1', 'Field2'])
print (df.groupby(level=[0,1]).size())
Field1 Field2
1 4 2
6 1
dtype: int64
print (df.groupby(level=['Field1', 'Field2']).size())
Field1 Field2
1 4 2
6 1
dtype: int64
print (df.groupby(level=['Field1', 'Field2']).count())
C D E F
Field1 Field2
1 4 2 2 2 2
6 1 1 1 1
通过评论
df.set_index(['Continent', 'Sector'], inplace=True)
print (df)
Count
Continent Sector
Asia 1 4
2 1
Australia 1 1
Europe 1 1
2 3
3 2
North America 1 1
5 1
South America 5 1
print (df['Count'])
Continent Sector
Asia 1 4
2 1
Australia 1 1
Europe 1 1
2 3
3 2
North America 1 1
5 1
South America 5 1
Name: Count, dtype: int64
或者:
print (df.squeeze())
Continent Sector
Asia 1 4
2 1
Australia 1 1
Europe 1 1
2 3
3 2
North America 1 1
5 1
South America 5 1
Name: Count, dtype: int64
全部与set_index
一起:
print (df)
Continent Sector Count
0 Asia 1 4
1 Asia 2 1
2 Australia 1 1
3 Europe 1 1
4 Europe 2 3
5 Europe 3 2
6 North America 1 1
7 North America 5 1
8 South America 5 1
print (df.set_index(['Continent', 'Sector'])['Count'])
Continent Sector
Asia 1 4
2 1
Australia 1 1
Europe 1 1
2 3
3 2
North America 1 1
5 1
South America 5 1
Name: Count, dtype: int64
这篇关于将MultiIndex DataFrame转换为Series的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文