首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >根据字符串是否为pandas Dataframe中的子字符串创建列

根据字符串是否为pandas Dataframe中的子字符串创建列
EN

Stack Overflow用户
提问于 2018-06-23 07:25:09
回答 1查看 120关注 0票数 1

我的数据框中的一列是具有特定命名约定的标识符名称。输入时,输入不正确。我想知道如何在python中找到特定的关键字来输入它自己的列。也许是某种循环?

示例:

代码语言:javascript
复制
types = ['XYZ', 'OPQ', 'MNO', 'ABC']

当前df:

代码语言:javascript
复制
ID  ID Name
45  I_name_ls_XYZ_random
46  I_22_name_ABC_random
47  I_name_ls_XYZ_random_45
48  I_name_ls_MNO_random
49  I_ls_OPQ_random_name
50  I_name_ls_ABC_random
51  I_name_ls_XYZ_random
52  I_name_MNO_random

想要的结果:

代码语言:javascript
复制
ID  ID Name                types
45  I_name_ls_XYZ_random    XYZ
46  I_22_name_ABC_random    ABC
47  I_name_ls_XYZ_random_45 XYZ
48  I_name_ls_MNO_random    MNO
49  I_ls_OPQ_random_name    OPQ
50  I_name_ls_ABC_random    ABC
51  I_name_ls_XYZ_random    XYZ
52  I_name_MNO_random       MNO
EN

回答 1

Stack Overflow用户

发布于 2018-06-23 07:38:34

pd.Series.apply与自定义函数/生成器表达式一起使用:

代码语言:javascript
复制
types = {'XYZ', 'OPQ', 'MNO', 'ABC'}

def string_filter(x):
    return next((i for i in x.split('_') if i in types), None)

df['types'] = df['ID_Name'].apply(string_filter)

print(df)

   ID                  ID_Name types
0  45     I_name_ls_XYZ_random   XYZ
1  46     I_22_name_ABC_random   ABC
2  47  I_name_ls_XYZ_random_45   XYZ
3  48     I_name_ls_MNO_random   MNO
4  49     I_ls_OPQ_random_name   OPQ
5  50     I_name_ls_ABC_random   ABC
6  51     I_name_ls_XYZ_random   XYZ
7  52        I_name_MNO_random   MNO
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50996642

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档