如何为dataframe第二列空格分隔字符串加引号并以逗号分隔
实现方案
直接用pandas原生的字符串处理链就能实现,不需要写自定义循环,代码简洁且对异常空格的兼容性好。
- 先给可复现的测试数据构造代码,你实际使用时跳过这步,直接操作自己的DataFrame即可:
import pandas as pd # 匹配你给出的原始样例数据 df = pd.DataFrame({ 'col.x': ['company1', 'company2'], 'col.y': ['science data tech food social', 'social tech industry data'] })
- 核心处理逻辑分三步:先把空格分隔的字符串拆成词列表,给每个词前后加双引号,最后用
,做分隔符重新拼接成字符串。
如果你明确知道列名是col.y,直接用列名索引即可:
df['col.y'] = df['col.y'].str.split().apply( lambda words: ', '.join(f'"{w}"' for w in words) )
如果你要固定操作第二列、不想写死列名,用位置索引的写法更通用:
# iloc[:,1] 表示取所有行的第2列(pandas索引从0开始计数) df.iloc[:, 1] = df.iloc[:, 1].str.split().apply( lambda words: ', '.join(f'"{w}"' for w in words) )
- 处理完成后打印DataFrame,得到的结果和你预期完全一致:
col.x col.y 0 company1 "science", "data", "tech", "food", "social" 1 company2 "social", "tech", "industry", "data"
小提示:这里
str.split()没有传入分隔符参数,默认会按任意长度的空白字符拆分,自动跳过字符串首尾空格、中间连续多空格的情况,比手动写split(' ')鲁棒性更强,不会产生多余的空字符串元素。
内容的提问来源于stack exchange,提问作者Munrock
相关产品推荐
相关产品推荐

