我是Pandas Python的新手。
我有一个Pandas.Series值:
month id
01_Jan 1 3
02_Feb 1 2
2 4
03_Mar 1 2
3 5
dtype: int64
month和id是索引,最后一列是pandas中的系列。
这里,月有4个值,例如“01_Jan”,“02_Feb”,“03_Mar”。 id计数如1,2,3 系列有一些计数3,2,4,2,5。
我需要重新格式化上述系列类型,如果 id 没有月,那么它应该添加计数值的相应月份0 即可。 pandas.Series 下面解释了它应该是什么样的:
month id
01_Jan 1 3
01_Jan 2 0
01_Jan 3 0
02_Feb 1 2
02_Feb 2 4
02_Feb 3 0
03_Mar 1 2
03_Mar 2 0
03_Mar 3 5
dtype: int64
答案 0 :(得分:1)
MultiIndex.from_product
使用reindex
:
mux = pd.MultiIndex.from_product(s.index.levels, names=s.index.names)
print (s.reindex(mux, fill_value=0))
month id
01_Jan 1 3
2 0
3 0
02_Feb 1 2
2 4
3 0
03_Mar 1 2
2 0
3 5
dtype: int64
unstack
+ stack
的另一种解决方案,但在大型DataFrame
中速度较慢:
print (s.unstack(fill_value=0).stack())
month id
01_Jan 1 3
2 0
3 0
02_Feb 1 2
2 4
3 0
03_Mar 1 2
2 0
3 5
dtype: int64