我有数据框
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
,但它起作用
答案 0 :(得分:2)
In [38]: df.assign(x=df.groupby('id').cumcount()+1) \
...: .set_index(['id','x']) \
...: ['domain'].unstack('x') \
...: .rename_axis(None, 1) \
...: .reset_index()
...:
Out[38]:
id 1 2 3
0 111 vk.com facebook.com twitter.com
1 222 avito.ru vk.com None
或
var
答案 1 :(得分:2)
使用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