如何用apply和lambda逐行截断Pandas中Tag列的字符串?
问题描述
现有如下Pandas DataFrame:
import pandas as pd # initialize list of lists data = [['1', "Tag1, Tag323, Tag36"], ['2', "Tag11, Tag212"], ['4', "Tag1, Tag12, Tag3, Tag324"]] # Create the pandas DataFrame df = pd.DataFrame(data, columns = ['ID', 'Tag'])
原始输出:
ID Tag 0 1 Tag1, Tag323, Tag36 1 2 Tag11, Tag212 2 4 Tag1, Tag12, Tag3, Tag324
需求:对Tag列的字符串进行处理——若每行标签数量超过2个,输出格式为"Tag1, Tag2 ..";若不超过2个则保留原内容。要求用Pandas的apply和lambda方法实现。
实现代码
可以通过apply结合lambda函数,对Tag列的每个字符串进行拆分、判断长度后重新拼接:
df['Tag'] = df['Tag'].apply(lambda x: ', '.join(x.split(', ')[:2]) + ' ..' if len(x.split(', ')) > 2 else x)
处理后的DataFrame输出:
ID Tag 0 1 Tag1, Tag323 .. 1 2 Tag11, Tag212 2 4 Tag1, Tag12 ..
代码说明
x.split(', '):将标签字符串按,拆分成列表,方便统计标签数量和提取前两个标签len(x.split(', ')) > 2:判断当前行的标签数量是否超过2个- 若满足条件:用
', '.join()拼接前两个标签,再追加' ..' - 若不满足条件:直接返回原字符串
内容的提问来源于stack exchange,提问作者Daniel
相关产品推荐
相关产品推荐

