首先,感谢您花时间阅读本文。
我已将数据从 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')
你怎么看?
提前致谢
最佳答案
试试这个:
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
关于python - 检查列的单元格是否以特定字符串开头 [Pandas],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38021060/