Проверьте, начинаются ли ячейки столбца с определенной строки [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')
Что вы думаете?
Заранее спасибо,
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