【问题标题】:Pandas Save to multiple small CSV filesPandas 保存到多个小的 CSV 文件
【发布时间】: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 行重复整个过程

【问题讨论】:

    标签: python pandas csv


    【解决方案1】:

    不确定你是否想要这个,试试:

    df=pd.DataFrame()
    df=df.append(["x"]*1000)
    
    
    # Loop
    i=0
    
    while i <len(df)-1:
       df.iloc[i:i+1000,:].to_csv("output_{0}_{1}.csv".format(i,i+1000),index=False)
       i+=1000
    

    【讨论】:

    • 我的意图是,将 1k 行放入一个 CSV 文件中。我每个 DF 读取 100 行的原因是为了节省内存。将 100 行读入 DF,然后将其刷新到一个文件中,然后下一个 100 --> 重复直到 1000 行(10 次),然后使用不同的 csv 文件对下 1000 行重复整个过程
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-02-20
    • 2017-08-30
    • 2018-11-22
    • 1970-01-01
    • 2020-04-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多