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…保留三个类似的函数。。。。