【发布时间】:2021-04-12 00:43:28
【问题描述】:
我正在从流中读取 CSV 数据(例如 cat /tmp/rawfile)。下面的演示代码有效。
cmd = ('cat', '/tmp/csvfile')
process = subprocess.Popen(cmd, stdout=subprocess.PIPE)
csv = io.StringIO(process.stdout.read().decode())
data = pandas.read_csv(csv, index_col=0)
csv.close()
此 CSV 包含 10K 行。我想从 Pandas 中读取数据并将 1k 行保存到 CSV 文件中。然后接下来的 1k 行将转到下一个 CSV 文件。这就是我想要达到的目标。这可能吗?
有关此的一些信息:
我有一些非常大的 CSV 文件。(数十亿行)我使用了Split 命令,但有几行有\n - newline characters,所以在根据多行拆分时,它正在移动其余的\n 之后的列将移至下一行。
示例:
Row 1:
"col1" | "col2" | "This is
my first row"
Row 2:
"col1" | "col2" | "This is my second row"
在第 1 行 - 这两行属于特定列。但是如果我根据行拆分,它会将其拆分为两个不同的行。
这就是为什么我想使用 Pandas 读取流数据 (stdin) 每 100 行作为一个块并将其放入 CSV 文件中。然后读取接下来的 100 行并附加相同的 CSV,因为我想在每个 CSV 中放置 1k 行。
对此逻辑有何建议或示例代码?
更新:
我的意图是,将 1k 行放入一个 CSV 文件中。我每个 DF 读取 100 行的原因是为了节省内存。将 100 行读入 DF,然后将其刷新到文件中,然后将下一个 100 --> 重复直到 1000 行(10 次),然后使用不同的 csv 文件对下 1000 行重复整个过程
【问题讨论】: