2016-06-24 103 views
2

首先,感謝您花時間閱讀本文。檢查列的單元格是否以特定的字符串開頭[Pandas]

我已經將數據從csv導入熊貓的表格中。 我想要做的是創建一個新列,並用不同的數字填充它,這取決於另一列中的字符串。

因此,如果第一列是一樣的東西:

Column1 
Horse1 
Horse2 
Chicken3 
Chiken4 
Chicken5 
Cow6 
Horse7 
Cow8 
Cow9 

我想打一個新列,所以將只考慮第一個動物的名字,並給予一個數字吧:

Column1    Column2 
Horse1    1 
Horse2    1 
Chicken3    2 
Chiken4    2 
Chicken5    2 
Cow6     3 
Horse7    1 
Cow8     3 
Cow9     3 

目前,我已經試過是(我也離開了評論給你看我以前嘗試,並沒有任何工作):

def f(row): 
    #if StringMethods.startswith('Horse', na=False): 
    #if animals['Column1'].str.contains("Horse")==True: 
    #if animals[animals['Column1'].str.contains('Horse', na=False)]: 
    if (animals[animals['Horse'].isin(animals['Column1'])]): 
     val = 1 
    return val 

animals['Column2'] = animals.apply(f, axis = 1) 

而且我得到這個錯誤:

KeyError: ('Horse', u'occurred at index 0')

你覺得呢?

由於提前,

回答

1

試試這個:

In [34]: mapping = { 
    ....: 'Horse': 1, 
    ....: 'Chicken': 2, 
    ....: 'Cow': 3, 
    ....: 'Dog': 4, 
    ....: } 

In [40]: df['Column2'] = df.Column1.str.replace(r'\d+', '').map(mapping) 

In [41]: df 
Out[41]: 
    Column1 Column2 
0 Horse1  1 
1 Horse2  1 
2 Chicken3  2 
3 Chicken4  2 
4 Chicken5  2 
5  Cow6  3 
6 Horse7  1 
7  Cow8  3 
8  Cow9  3 
+0

它的工作,謝謝! :) – LizardLi

+0

@LizardLi,歡迎您! :) – MaxU

相關問題