【问题标题】:Python output every nth row without PandasPython 在没有 Pandas 的情况下每隔 n 行输出一次
【发布时间】:2021-07-21 17:05:00
【问题描述】:

我对 Python 很陌生,我的任务是用 Python 重写 CSV。我已经设法为我的任务编写了一个工作脚本。现在我只想将 CSV 的每 10 行作为输出。 是否有捷径可寻? 我已经尝试使用 Jason Reeks 的答案。 现在可以了,谢谢!

import csv
import sys

userInputFileName = sys.argv[1]
outPutFileSkipped = userInputFileName.split('.')[0] + '-Skipped.csv'

cnt = 0
first = True

with open(outPutFileSkipped, 'w', newline='') as outputCSV:
    csv_reader_object_skipped = csv.reader((x.replace('\0', '') for x in open(userInputFileName)), delimiter=',')
    csv_writer_object_skipped = csv.writer(outputCSV, delimiter=',')

    for row, line in enumerate(csv_reader_object_skipped):
        if row % 10 == 0:
            print(line)
            csv_writer_object_skipped.writerow(line)

print('Es wurden erfolgreich ' + str(cnt) + ' Zeilen formatiert!')

【问题讨论】:

  • 嗨@Alex,你能提供更多细节吗?您的输入数据的一些示例,输出应该是什么样的以及您当前的代码将非常有用
  • 输入数据为经度、纬度、日期时间

标签: python csv


【解决方案1】:

这是一种不用 pandas 的本地方法:

import csv

with open('file.csv', 'r') as f:
    reader = csv.reader(f)
    for row, line in enumerate(reader):
        # Depending on your reference point you may want to + 1 to row 
        # to get every 10th row.
        if row % 10 == 0:  
            print(line)

【讨论】:

  • 谢谢!它只是说“_csv.Error: iterable expected, not int”
【解决方案2】:

Pandas 有一个简单的方法:

import pandas as pd

df = pd.DataFrame({"a": range(100), "b": range(100, 200)})
df.loc[::10]

【讨论】:

  • 没有熊猫
  • 谢谢!我刚开始在没有 Pandas 的情况下编写程序,所以我更喜欢没有..的解决方案
猜你喜欢
  • 2012-04-26
  • 2014-09-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多