1、对于本文的说明
这篇文章,是帮一个群友回答的问题。他的需求是:对于中英文混合的行,只需要中文。对于全英文的行,返回整个英文行。对于全中文的行,返回整个中文行。
2、解答如下
import pandas as pd import re df = pd.read_excel(r"G:\6Tipdm\test.xlsx") display(df) def func(x): if re.findall("[\u4E00-\u9FD5]+",x) == []: z = re.findall("[^\u4E00-\u9FD5,]+",x) z = "".join(z).strip() return z else: z = re.findall("[\u4E00-\u9FD5, ]+",x) z = "".join(z).strip() return z df["aa"] = df["产品"].apply(func) df
结果如下:
3、上述问题的扩展(中英文分开提取)
import pandas as pd import re df = pd.read_excel(r"G:\6Tipdm\test.xlsx") display(df) def func(x): if re.findall("[\u4E00-\u9FD5]+",x) != []: z = re.findall("[^\u4E00-\u9FD5,]+",x) z = "".join(z).strip() return z elif re.findall("[\u4E00-\u9FD5]+",x) == []: z = re.findall("[^\u4E00-\u9FD5,]+",x) z = "".join(z).strip() return z else: return "" def func2(x): if re.findall("[\u4E00-\u9FD5]+",x) != []: z = re.findall("[\u4E00-\u9FD5, ]+",x) z = "".join(z).strip() return z else: return "" df["aa"] = df["产品"].apply(func) df["bb"] = df["产品"].apply(func2) df
结果如下: