Python 熊猫:更改数据帧的视图

Python 熊猫:更改数据帧的视图,python,pandas,Python,Pandas,我有数据帧 id domain 111 vk.com 111 facebook.com 111 twitter.com 222 avito.ru 222 vk.com 期望输出 id domain1 domain2 domain3 111 vk.com facebook.com twitter.com 222 avito.ru vk.com NaN 我尝试转置df.T,但它不这样做 In

我有数据帧

id      domain
111      vk.com
111      facebook.com
111      twitter.com
222      avito.ru
222      vk.com
期望输出

id    domain1    domain2   domain3
111   vk.com   facebook.com  twitter.com
222   avito.ru    vk.com      NaN
我尝试转置
df.T
,但它不这样做

In [34]: df.assign(x=df.groupby('id').cumcount()+1) \
    ...:   .pivot(index='id', columns='x', values='domain') \
    ...:   .add_prefix('domain') \
    ...:   .rename_axis(None, 1) \
    ...:   .reset_index()
    ...:
Out[34]:
    id   domain1       domain2      domain3
0  111    vk.com  facebook.com  twitter.com
1  222  avito.ru        vk.com         None


使用
pd.crosstab

    pd.crosstab(index=df.id,columns=df.groupby('id').cumcount().add(1),values=df.domain,aggfunc='sum').\
               add_prefix('domain')
Out[570]: 
col_0   domain1       domain2      domain3
id                                        
111      vk.com  facebook.com  twitter.com
222    avito.ru        vk.com         None

使用
pd.crosstab

    pd.crosstab(index=df.id,columns=df.groupby('id').cumcount().add(1),values=df.domain,aggfunc='sum').\
               add_prefix('domain')
Out[570]: 
col_0   domain1       domain2      domain3
id                                        
111      vk.com  facebook.com  twitter.com
222    avito.ru        vk.com         None

我喜欢
交叉表
解决方案;-)+1@MaxU我还有一个问题,为什么我们需要
交叉表
透视表
透视表
都在这里…对我来说,它们没有太多不同之处:-)依我看,选项越多越好;)@MaxU很抱歉造成误解,我是说熊猫API…保留三个类似的函数…我喜欢
交叉表
解决方案;-)+1@MaxU我还有一个问题,为什么我们需要
交叉表
透视表
透视表
都在这里…对我来说,它们没有太多不同之处:-)依我看,选项越多越好;)@MaxU很抱歉造成误解,我是说熊猫API…保留三个类似的函数。。。。