Проверьте, начинаются ли ячейки столбца с определенной строки [Pandas]



Прежде всего, спасибо, что нашли время прочитать это.



Я импортировал данные из csv в таблицу в Pandas.
Я хочу создать новый столбец и заполнить его различными числами, которые будут зависеть от строки внутри другого столбца.



Итак, если первый столбец имеет вид:



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')




Что вы думаете?



Заранее спасибо,

467   1  

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

Comments

    Ничего не найдено.