CSV文件转换需求:跨行对比与轻量计算处理
嘿,这个CSV处理需求我熟!我来给你整一个实用的解决方案,用Python的pandas库就能轻松搞定,先把需求捋清楚,再上代码~
需求拆解
先把核心规则明确下来,避免歧义:
- 处理9列的输入CSV,生成新的输出CSV
- 核心填充规则:
- 当某一行(相对于上一行来说的“下一行”)的第1、3、5列值为NULL时,复制上一行对应列的值过来
- 如果上一行的第5列本身就是NULL,那当前行的第5列就填充为
N/A,而不是空值 - 支持其他自定义调整(后面会说怎么扩展)
实现代码(Python + Pandas)
pandas是处理CSV最顺手的工具之一,代码简洁易读,还能轻松扩展规则。
首先确保你已经安装了pandas:
pip install pandas
然后是处理脚本:
import pandas as pd # 1. 读取原始CSV,把CSV里的"NULL"或空字符串识别为缺失值(NaN) df = pd.read_csv('input.csv', na_values=['NULL', '']) # 2. 遍历行处理缺失值 for i in range(1, len(df)): current_row = df.iloc[i] prev_row = df.iloc[i-1] # 处理第1列(注意:CSV里的第1列对应pandas的索引0) if pd.isna(current_row[0]): current_row[0] = prev_row[0] # 处理第3列(对应pandas索引2) if pd.isna(current_row[2]): current_row[2] = prev_row[2] # 处理第5列:如果上一行第5列是空,就填N/A if pd.isna(current_row[4]): current_row[4] = 'N/A' if pd.isna(prev_row[4]) else prev_row[4] # 把修改后的行存回DataFrame df.iloc[i] = current_row # 3. 保存处理后的CSV,把剩余缺失值还原为"NULL"(如果需要的话) df.to_csv('output.csv', index=False, na_rep='NULL')
自定义调整说明
如果还有其他需求,比如:
- 需要填充更多列,或者调整填充规则:直接在循环里添加对应列的处理逻辑就行
- 要新增行:可以用
df.loc[len(df)] = [val1, val2, ..., val9]来插入新行 - 轻量计算(比如求和、平均值):比如
df['new_col'] = df[0] + df[2]就能新增一个计算列(这里的0和2对应原始CSV的第1、3列)
示例验证
假设原始CSV的几行是这样:
col1,col2,col3,col4,col5,col6,col7,col8,col9 A,val2,B,val4,NULL,val6,val7,val8,val9 NULL,val2,NULL,val4,NULL,val6,val7,val8,val9 C,val2,D,val4,E,val6,val7,val8,val9
处理后输出的CSV会是:
col1,col2,col3,col4,col5,col6,col7,col8,col9 A,val2,B,val4,NULL,val6,val7,val8,val9 A,val2,B,val4,N/A,val6,val7,val8,val9 C,val2,D,val4,E,val6,val7,val8,val9
完美符合你的规则~
内容的提问来源于stack exchange,提问作者AfroJoe
相关产品推荐
相关产品推荐

