python - 如何检查字符串中的第 n 个字符,然后在新列 Python 中更新

标签 python pandas numpy

目标:如果字符串中的第8(或第n)字符匹配条件则在新列中更新

按单个字符串中的单词:

# if i want to check the 3rd character
IN[0]:  s = "apple"
        s[2]
OUT[0]: 'p'

代码:

tt = pd.DataFrame({"CC":["T020203J71500","Y020203K71500","T020407JLX100","P020403JLX100"])

tt["NAME"] = pd.np.where(tt["CC"][7].str.contains("J"),"JANICE",
               pd.np.where(tt["CC"][7].str.contains("K"),"KELVIN",
               pd.np.where(tt["CC"][7].str.contains("X"),"SPECIAL","NONE")))

问题: 显然 [7]不是python的做法

在 R 数据表中:

tt[grepl("J",str_sub(CC,8,8)),
      "NAME":="JANICE"]
tt[grepl("K",str_sub(CC,8,8)),
      "NAME":="KELVIN"] # .... can achieve by doing like this 

我如何在 Python 中执行此操作?

最佳答案

使用series.str得到你正在寻找的切片 map用你的字典:

d={'J':'JANICE','K':'KELVIN','X':'SPECIAL'}
tt['Name']=tt['CC'].str[7].map(d).fillna('NONE')
print(tt)

              CC    Name
0  T020203J71500  JANICE
1  Y020203K71500  KELVIN
2  T020407JLX100  JANICE
3  P020403JLX100  JANICE

关于python - 如何检查字符串中的第 n 个字符,然后在新列 Python 中更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57200052/

相关文章:

java - 调用 midlet jar 将数据检索到 python 代码中

python - 忽略 nan 值并执行 numpy.polyval 的函数

python - Pandas - 旋转、堆叠、取消堆叠?

python lambda,numpy帮助找到时间总和

python - Numpy 整个矩阵与单行相乘

python - 用另一个替换 DataFrame 的某些列(基于列名)

Python pytz : non-existent time gets AmbiguousTimeError, 不是 NonExistentTimeError

python - 将 Pandas 数据框转换为包含字典或列表列表

python - 使用两个条件过滤数据框 pandas python

python - 如何在python中的时间序列之间有效地映射数据