python:使用pandas。得到重要

时间:2014-03-04 16:30:19

标签: python pandas

我有这样的数据集:

<link>, <type>

例如,类型可以是“dofollow”,“nofollow”和“javascript”。

鉴于每个链接可能在数据集中出现多次,我需要以下列方式获得结果

link, dofollow, nofollow, javascript
http://somelink.com, 10 (e.g. it appeared 10 times as dofollow), 0, 101

1 个答案:

答案 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