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

标签 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: ('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/

相关文章:

python - 全局集中然后标准化图像

python - 混淆类和函数之间的界限

python - 具有分层列的 Pandas 数据透视表

python - 使用python检测日志文件中是否存在csv列中的字符串?

python - 使用重采样计算 2 周的平均计数

python - 警告 : Incorrect Integer Value error MYSQL

python - 将一个列表中的项目移动到另一个列表中的纸牌游戏 Python

python - python中socket.PF_PACKET和socket.AF_INET的区别

python - 重现次数

Python numpy where 函数行为