2015-12-11 121 views
1

我對python和熊貓很新。我有以下示例CSV作爲輸入。使用panda根據比較列中的值比較列值並創建列?

ID Name Activity 
1 AB Play 
2 AD Hurt 
3 cd Polite 
4 CA Play 

我想這所以基本上轉化爲

ID Name Activity NumActivity 
1 AB Play  1 
2 AD Hurt  2 
3 cd Polite 3 
4 CA Play  1 

,我想給數值在爲活動列中的字符串。

因爲我對熊貓很新,所以我正在接近這個論壇尋求幫助。

感謝,

回答

0

您可以使用factorize

In [6]: 
df['NumActivity'] = pd.factorize(df['Activity'])[0] +1 
df 

Out[6]: 
    ID Name Activity NumActivity 
0 1 AB  Play   1 
1 2 AD  Hurt   2 
2 3 cd Polite   3 
3 4 CA  Play   1 

這裏factorize返回一個包含數組對一個元組:

In [8]: 
pd.factorize(df['Activity']) 

Out[8]: 
(array([0, 1, 2, 0]), Index(['Play', 'Hurt', 'Polite'], dtype='object')) 

所以我們的索引使用[0],看到你的第一個元素希望您的索引從1開始,我們將+1設爲值。

+0

非常感謝。 df ['NumActivity'] = pd.factorize(df ['Activity'])[0] +1有效。但是當我嘗試使用df ['NumActivity'] = pd.factorize(df ['Activity'])[0] +1添加新列時,我得到KeyError:'numActivity'。它似乎並沒有創造這個新的專欄。我如何解決這個問題? – 1974sb

+0

很酷,你能接受我的回答,所以問題不會沒有答案,我的答案的左上角會有一個空的刻度標記 – EdChum

+0

非常感謝。 df ['NumActivity'] = pd.factorize(df ['Activity'])[0] +1有效。但是當我嘗試使用df ['NumActivity'] = pd.factorize(df ['Activity'])[0] +1添加新列時,我得到KeyError:'numActivity'。它似乎並沒有創造這個新的專欄。我如何解決這個問題? – 1974sb