【发布时间】:2020-10-24 22:43:51
【问题描述】:
import pandas as pd
import re
df = pd.read_csv("df.csv")
df
_id,column1,column2
1,FullName,
2,xyz,
3,custname,
4,FullNm,
5,FirstName,
6,abc
如果在这种情况下 column1 中的任何值仅由给定的一组关键字组成(full、name、nm、txt、dsc),并且此处关键字“full”是强制性存在的,则将“column2”更新为“全名”否则将其留空。我们如何使用正则表达式来实现或是否有其他简单的方法
我试图这样做
df.column2 = df.column1.str.replace('full|name|nm|txt|dsc',"Full Name")
我得到一个错误的输出:
_id,column1,column2
1,FullName,FullName
2,xyz,xyz
3,custname,custname
4,FullNm,FullNm
5,FirstName,FirstName
6,abc,abc
需要输出的地方:
_id,column1,column2
1,FullName,Full Name
2,xyz,
3,custname,
4,FullNm,Full Name
5,FirstName,
6,abc
我可以使用 awk 轻松实现:
awk -F , -v OFS=, 'gensub(/full|name|nm|txt|dsc[0-9]*/,"","g",tolower($2))=="" {$3="Full Name"; print $0}' df.csv| awk -F , -v OFS=, '(tolower($2) ~ /full/) {print $0}'
条件
给定一组关键字 - full|name|nm|txt|dsc[0-9] 强制关键字 - 完整的
以下是不符合条件的情况。
案例1
custfullname - 这里 cust 不在给定的单词集中,所以不要更新 column2
案例2
txtnmdsc - 这里的值由给定的一组关键字组成,但不包含强制关键字。
以下是它匹配的条件:
fulltxt1
fulldsc
fullname
full
full123
【问题讨论】: