2014-03-04 27 views
1

我有數據集在尋找這樣:python:與熊貓一起工作。獲取計數

<link>, <type> 

例如,類型可以是「dofollow」,「nofollow的」和「的JavaScript」。

考慮到每一個環節都可能出現多次的數據集,我需要導致以下方式

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

回答

2

您可以使用GROUPBY尺寸的事實:

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 
+0

該工程!你能否也建議我是否可以將nofollow和javascript分組在一起?例如。通過添加計數 –

+0

我會在最後添加那些cols然後刪除它們,你可以用res ['dontfollow'] = res.pop('javascript')+ res.pop('nofollow')非常整齊地做到這一點。 –

+0

非常感謝您的建議! –