【问题标题】:Make CSV file from each row从每一行制作 CSV 文件
【发布时间】:2019-10-14 13:17:25
【问题描述】:

我有一个包含 n 列的数据框。一个是城市名称。

我正在尝试根据城市名称提取每一行并将每一行打印到一个新的 CSV 文件中。

col1  col2    cityName

a       5     Madrid
s       10    NEWYORK
d       0     London
f       2     Berlin

答案:

第一个 csv 文件:

col1  col2    cityName

a       5     Madrid

第二个 csv 文件:

col1  col2    cityName
s       10    NEWYORK

【问题讨论】:

    标签: python database pandas csv dataframe


    【解决方案1】:

    此代码将遍历任何 DataFrame(如果存在)并创建一个新的 csv 文件(对于每一行),其中包含列标题以及行,否则如果 DataFrame 不存在,它将不会执行任何操作。

    import pandas as pd
    i=0
    while True:
        try: 
            df.iloc[[i]].to_csv("filename.csv")
            i = i+1
        except: pass
    

    【讨论】:

    • 解释一下你的答案。
    • 此代码将遍历任何 DataFrame(如果存在)并创建一个新的 csv 文件(对于每一行),其中包含列标题以及行,否则如果 DataFrame 不存在,它将什么都不做。
    • 我的意思是,编辑答案并在那里解释:stackoverflow.com/help/how-to-answer
    【解决方案2】:

    您可以按 cityName 列对行进行分组,然后将每个组导出到单独的 csv,如下所示:

    编辑:将保存结果添加到 csv 文件

    编辑:添加压缩所有文件

    import zipfile
    import pandas as pd
    
    df = pd.DataFrame(
        data={'col1': ['a', 's', 'd', 'f', 'x'], 'col2': [5, 10, 0, 2, 4],
              'cityName': ['Madrid', 'NEWYORK', 'London', 'Berlin', 'Madrid']})
    
    groupby = df.groupby('cityName')
    out_zip = zipfile.ZipFile("58377674.zip", "w")
    
    for n, g in groupby:
        print(n)
        csv = g.to_csv(index=False)
        print(csv)
        csv_filename = "{}.csv".format(n)
        with open(csv_filename, 'w') as out_file:
            out_file.write(csv)
        out_zip.write(csv_filename)
    

    【讨论】:

    • 我的输出中有每个组,如何将每个组发送到 Excel 文件?
    • @Narg 添加保存文件
    • 你能告诉我如何从所有 csv = g.to_csv(index=False) 制作 zip 文件吗?
    • @NData,添加压缩所有文件。您可以在末尾添加import os 并添加os.remove(csv_filename) 以删除CSV文件
    【解决方案3】:

    以下代码将创建一个 CSV 文件,并在其中写入一行。您可以遍历此代码直到您的最后一条记录,并且每次它都会生成一个唯一的数据文件。

    import csv
    from datetime import datetime
    
    for index, row in dataframe.iterrows():
        filename = datetime.now()
        filename = filename.strftime("%d-%m-%Y_%H:%M:%S")
        file = open('data_'+str(filename)+'.csv', 'w')
        w = csv.writer(file)
        w.writerow([row['col1'], row['col2'], row['cityName']])
        file.close()
    

    【讨论】:

    • 问题未指定。您的回答不能解决数据框的任何问题。它不会产生“要求的”文件,它包含未指定的名称 => NameError 并且不使用上下文处理 with open(..) as f: 这是处理文件的理想方式
    猜你喜欢
    • 2018-11-01
    • 2018-10-17
    • 2017-08-24
    • 1970-01-01
    • 2021-10-22
    • 2020-09-21
    • 2017-05-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多