Python 如何基于Pandas中的其他df创建特定的数据帧?
我的数据框架如下所示:Python 如何基于Pandas中的其他df创建特定的数据帧?,python,pandas,filter,Python,Pandas,Filter,我的数据框架如下所示: data = pd.DataFrame({"Country" : ["Brazil", "Brazil", "Germany", "Germany", "UK"], "Order method" : ["Phone", "Retail", "W
data = pd.DataFrame({"Country" : ["Brazil", "Brazil", "Germany", "Germany", "UK"],
"Order method" : ["Phone", "Retail", "Web", "Web", "Retail"]})
我想在上述数据框的基础上创建新的数据框,结果如下:
与并用于添加缺少的类别:
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
添加:
最后,如有必要,将重复值替换为空字符串使用:
与预期输出不同,但您可能希望尝试
pd.crosstab(数据[“国家]、数据[“订单方法])
。谢谢大家!同时请告诉我,我如何过滤,例如,巴西的订单方法是怎样的?
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
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