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