我有这样的数据集:
<link>, <type>
例如,类型可以是“dofollow”,“nofollow”和“javascript”。
鉴于每个链接可能在数据集中出现多次,我需要以下列方式获得结果
link, dofollow, nofollow, javascript
http://somelink.com, 10 (e.g. it appeared 10 times as dofollow), 0, 101
答案 0 :(得分:2)
您可以使用groupby size:
In [11]: df = pd.DataFrame([['a_link', 'dofollow'], ['a_link', 'dofollow'], ['a_link', 'nofollow'], ['b_link', 'javascript']], columns=['link', 'type'])
In [12]: df
Out[12]:
link type
0 a_link dofollow
1 a_link dofollow
2 a_link nofollow
3 b_link javascript
In [13]: df.groupby(['link', 'type']).size()
Out[13]:
link type
a_link dofollow 2
nofollow 1
b_link javascript 1
dtype: int64
现在你取消堆叠第二级(类型)以使其成为一个列并填写空白:
In [14]: df.groupby(['link', 'type']).size().unstack(1)
Out[14]:
type dofollow javascript nofollow
link
a_link 2 NaN 1
b_link NaN 1 NaN
In [15]: df.groupby(['link', 'type']).size().unstack(1).fillna(0)
Out[15]:
type dofollow javascript nofollow
link
a_link 2 0 1
b_link 0 1 0