CSV处理代码转Pandas实现及按条件递增字符串后缀问题咨询
方案说明
技术选型建议
简单的CSV读取、固定格式导出的轻量场景,保留原生csv模块代码即可,不需要额外引入Pandas依赖,运行效率更高。如果你的项目本身已经依赖Pandas做其他数据处理,或者后续需要对CSV数据做过滤、统计、关联等复杂操作,再换成Pandas实现更合适。
Pandas适配改造代码
以下代码完全对齐你原有原生csv模块的逻辑,同时实现了title后缀添加需求:
import pandas as pd # 读取CSV文件,若你的CSV自带表头,删除header=None参数即可 df = pd.read_csv('foo.csv', header=None, dtype=str) output_content = [] # 取CSV第一列的所有值遍历,对应原代码的Data[item][0]逻辑 for val in df.iloc[:, 0]: # 按规则添加后缀,每个值输出两行对应前缀 output_content.append(f'this is titleA-1: {val}') output_content.append(f'this is titleA-1: {val}') output_content.append(f'this is titleB-2: {val}') output_content.append(f'this is titleB-2: {val}') # 一次性写入文件,避免循环写入的IO性能问题 with open('titles.txt', 'w', encoding='utf-8') as f: f.write('\n'.join(output_content))
Lambda实现后缀添加的两种场景
场景1:修改DataFrame列名后缀
如果需要给DataFrame的列名称加指定后缀,实现代码如下:
df.columns = df.columns.map(lambda x: f"{x}-1" if x == "titleA" else f"{x}-2" if x == "titleB" else x)
场景2:修改列值的前缀后缀
如果需要给指定列的所有值拼接后缀,实现代码如下:
# 给titleA列所有值加-1后缀 df['titleA'] = df['titleA'].map(lambda x: f"{x}-1") # 给titleB列所有值加-2后缀 df['titleB'] = df['titleB'].map(lambda x: f"{x}-2")
内容的提问来源于stack exchange,提问作者newGuy
相关产品推荐
相关产品推荐

