如果系列的值包含pandas中的特定字符集,则替换后续字符

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如果系列的值包含pandas中的特定字符集,则替换后续字符相关的知识,希望对你有一定的参考价值。

我有一个这样的数据框:

df:
col1      col2         col3
 1       123xy56      pyrxyz 
 3        hcv           P
 xy12      R            T
 5        453xy         Z
 2        lxy6          Q

我想在数据框的每一列中删除以xy开头的所有内容。如果任何值以xy开头,则将其替换为零。

最终数据框应如下所示:

col1      col2         col3
 1        123           pyr
 3        hcv           P
 0         R            T
 5        453           Z
 2         l            Q
答案

你可以使用replace两次:

result = df.replace('xy.*', '', regex=True).replace('', 0)
print(result)

产量

  col1 col2 col3
0    1  123  pyr
1    3  hcv    P
2    0    R    T
3    5  453    Z
4    2    l    Q
另一答案

工作效率不高

df.apply(lambda x : x.str.split('xy').str[0]).replace('',0)

Out[386]: 
  col1 col2 col3
0    1  123  pyr
1    3  hcv    P
2    0    R    T
3    5  453    Z
4    2    l    Q

以上是关于如果系列的值包含pandas中的特定字符集,则替换后续字符的主要内容,如果未能解决你的问题,请参考以下文章

如果组中的最后一个元素包含Pandas中的特定字符串,则标记

用列/系列中的值替换熊猫子字符串

用一个值替换 Pandas 系列中的多个子字符串

如果不是 NAN,则用以前的值替换 Pandas 中的缺失值

Pandas:如果特定列不包含特定文本,则删除数据框中的行

如果匹配 FLUTTER 中的特定字符,则替换字符串中的字符