检查列的单元格是否以特定字符串开头[Pandas]

时间:2016-06-24 19:48:05

标签: python 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 :('马',你'发生在索引0')

您怎么看?

提前致谢,

1 个答案:

答案 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