python之查看列表中每个元素的字符串的第一个字符

jirigala 阅读:184 2025-06-02 22:19:02 评论:0

我有一个 pandas 数据框,其中有一列名为“图片”;该列的值以数字或字母开头。我想要做的是创建一个新列来检查值是否以字母或数字开头,并相应地填充该新列。我正在使用 np.where,我的代码如下(raw_master 是数据框,“数据库”是新列):

def iaps_or_naps(x): 
    if x in ["1","2","3","4","5","6","7","8","9"]: 
        return True 
    else: 
        return False 
raw_master['database'] = np.where(iaps_or_naps(raw_master.picture[?][0])==True, 'IAPS', 'NAPS') 

我的问题是,如果我只执行 raw_master.picture[0],它会检查整个字符串的值,这不是我需要的。我需要第一个字符;但是,如果我执行 raw_master.picture[0][0],那只会计算整个数据帧第一行的第一个字符。顺便说一句,问号只是表示我不确定该放什么。

我怎样才能得到它,以便它为每一行取字符串的第一个字符?

非常感谢!

请您参考如下方法:

您不需要为此编写自己的函数。以这个小df为例:

 s = pd.DataFrame(['3asd', 'asd', '3423', 'a123']) 

看起来像:

      0 
0  3asd 
1   asd 
2  3423 
3  a123 

使用内置的 Pandas :

# checking first column, s[0], first letter, str[0], to see if it is digit. 
# if so, assigning IAPS, if not, assigning NAPS 
 s['database'] = np.where(s[0].str[0].str.isdigit(), 'IAPS', 'NAPS') 

输出:

      0 database 
0  3asd     IAPS 
1   asd     NAPS 
2  3423     IAPS 
3  a123     NAPS 

将此应用于您的数据框:

raw_master['database'] = np.where(raw_master['picture'].str[0].str.isdigit(), 'IAPS', 'NAPS') 


标签:Python
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

关注我们

一个IT知识分享的公众号