首先,感谢您花时间阅读本文。
我已将数据从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')
您怎么看?
提前致谢,
答案 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