python - Python - Panda 在一个条件下将一个 csv 拆分为多个文件
问题描述
我有一个看起来像这样的 csv:
'-' 'd' '5'
'-' 'd' '9'
'-' 'v' '15'
'-' 's' '8'
'-' 's' '10'
'-' 'q' '3'
我想每次最后一列的数字减少时拆分数据框并保存到新文件中输出如下所示:
File1:
'-' 'd' '5'
'-' 'd' '9'
'-' 'v' '15'
文件 2
'-' 's' '8'
'-' 's' '10'
文件 3
'-' 'q' '3'
解决方案
为简单起见,我将假设您的 CSV 文件看起来像典型的 CSV 文件:
-,d,5
-,d,9
...
我还假设最后一列中的数字始终是正整数。
prev = 0
accumulatedLines = []
decreasedCount = 0
with open("my_file.txt", "r") as fin:
for line in fin:
values = line.split(",")
if int(values[2]) < prev:
with open("File{}.txt".format(decreasedCount + 1), "w") as fout:
fout.writelines(accumulatedLines)
decreasedCount += 1
accumulatedLines = []
accumulatedLines.append(line)
prev = int(values[2])
本质上,我们遍历输入文件中的每一行,用逗号分隔符将其拆分,并跟踪前一行最后一列的值。我们还将读取的行累积到当前行。如果最后一列中当前行的值严格小于前一行,我们将累积的行写入一个新文件(以迄今为止我们遇到的递减值的次数命名)。然后我们清除累加器(并增加计数)。
推荐阅读
- cassandra - 无法连接到任何服务器
- shell - 如何在 start.sh 脚本中获取 jar 名称
- python - 我如何提供再次运行程序或以 Python 结束程序的选择?
- vba - 启动 VBA 应用程序块使用和打开其他工作簿
- leaflet - 更改传单绘制中的顶点样式
- mongodb - mongodb异常连接失败
- android - Cannot find the declaration of element 'android.support.constraint.ConstraintLayout'
- javascript - pouchdb 对花式树的承诺
- git - Maintaining two git branches with a fixed set of differences
- typescript - Typescript - Application wide state (Singleton?)