Python Pandas提取字符串最大数值及所属非空格完整词段方法
解决方案
实现逻辑:遍历每一行文本的空格分隔词段,匹配包含对应最大数值的词段即可实现需求,完整可运行代码如下:
from numpy import floor, int64 from numpy.core import numeric import pandas as pd import re data = [['aaa', 10], ['nick12 text 1 a 1000a', 15], ['juli078 aq 199 299-01 aaa', 14]] df = pd.DataFrame(data, columns = ['col1', 'col2']) pat = (r'(\d+(?:\.\d+)?)') df['Number'] = df['col1'].str.extractall(pat).astype(int).max(level=0) df['Number'] = df['Number'].fillna(0) df['Number'] = df['Number'].astype(int) # 新增以下代码生成NumberText列 def get_number_text(row): if row['Number'] == 0: return '' # 按空格拆分所有词段 tokens = row['col1'].split() for token in tokens: # 提取当前词段所有数字 nums = re.findall(r'\d+', token) if not nums: continue # 词段最大数字等于Number则返回该词段 if max(map(int, nums)) == row['Number']: return token return '' df['NumberText'] = df.apply(get_number_text, axis=1) print(df)
运行输出结果与你预期一致:
col1 col2 Number NumberText 0 aaa 10 0 1 nick12 text 1 a 1000a 15 1000 1000a 2 juli078 aq 199 299-01 aaa 14 299 299-01
内容的提问来源于stack exchange,提问作者Kalenji
相关产品推荐
相关产品推荐

