如何解决如何在Pandas中基于其他df创建特定的DataFrame?
我有如下所示的DataFrame:
data = pd.DataFrame({"Country" : ["Brazil","Brazil","Germany","UK"],"Order method" : ["Phone","Retail","Web","Retail"]})
我想基于上面的数据框创建新的DataFrame,我希望看到如下结果:
解决方法
将GroupBy.size
与Series.unstack
和DataFrame.stack
一起使用,以添加缺少的类别:
s = data.groupby(['Country','Order method']).size().unstack(fill_value=0).stack()
print (s)
Country Order method
Brazil Phone 1
Retail 1
Web 0
Germany Phone 0
Retail 0
Web 2
UK Phone 0
Retail 1
Web 0
dtype: int64
对于DataFrame
,请添加DataFrame.reset_index
:
df = (data.groupby(['Country','Order method'])
.size()
.unstack(fill_value=0)
.stack()
.reset_index(name='Count'))
print (df)
Country Order method Count
0 Brazil Phone 1
1 Brazil Retail 1
2 Brazil Web 0
3 Germany Phone 0
4 Germany Retail 0
5 Germany Web 2
6 UK Phone 0
7 UK Retail 1
8 UK Web 0
如果有必要,最后将重复的值替换为空字符串,使用Series.mask
和Series.duplicated
:
df['Country'] = df['Country'].mask(df['Country'].duplicated(),'')
print (df)
Country Order method Count
0 Brazil Phone 1
1 Retail 1
2 Web 0
3 Germany Phone 0
4 Retail 0
5 Web 2
6 UK Phone 0
7 Retail 1
8 Web 0
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。