逐行读取csv文件,文件有五列,当读取到行,第二列为47且第三列时间相同时,构建新的csv文件,文件一共有三列,第一列为schedule,第二列为time,第三列为weiyi,将连续相同的第三列情况下的第五列数值,写入在新建csv文件weiyi下的一个单元格中每个数值以“,”隔开,并将第三列相同的时间写入新建csv文件time中,第一列写入新建文件csv文件schedule中。
时间: 2023-06-02 17:02:07 浏览: 114
CSV表格拆分,可以把一个CSV文件按固定行数拆分成多个文件
5星 · 资源好评率100%
以下是Python实现代码:
```python
import csv
# 打开原始csv文件和新建csv文件
with open('original.csv', 'r') as f1, open('new.csv', 'w', newline='') as f2:
# 定义csv文件读写对象
reader = csv.reader(f1)
writer = csv.writer(f2)
# 定义变量存储上一行的时间和weiyi
prev_time, prev_weiyi = None, None
# 逐行读取原始csv文件
for row in reader:
# 如果第二列为47且第三列时间相同
if row[1] == '47' and row[2] == prev_time:
# 如果weiyi有变化,则将上一行的weiyi写入新建csv文件
if row[4] != prev_weiyi:
writer.writerow(['', '', prev_weiyi])
# 将当前行的weiyi存入变量prev_weiyi中
prev_weiyi = row[4]
else:
# 如果不满足条件,则将上一行的weiyi写入新建csv文件
if prev_weiyi is not None:
writer.writerow(['schedule', prev_time, prev_weiyi])
# 将当前行的时间和weiyi存入变量prev_time和prev_weiyi中
prev_time, prev_weiyi = row[2], row[4]
# 处理最后一行
if prev_weiyi is not None:
writer.writerow(['schedule', prev_time, prev_weiyi])
```
说明:
1. 使用`csv`模块读写csv文件,`csv.reader`和`csv.writer`分别用于读取和写入csv文件。
2. 使用`with`语句打开文件,可以自动关闭文件。
3. 使用`newline=''`参数打开新建csv文件,防止出现多余的空行。
4. 使用变量`prev_time`和`prev_weiyi`分别存储上一行的时间和weiyi。
5. 在逐行读取原始csv文件时,判断是否满足条件,如果满足,则将weiyi写入新建csv文件;否则将上一行的weiyi写入新建csv文件,并更新变量`prev_time`和`prev_weiyi`。
6. 在处理最后一行时,需要单独处理。
阅读全文