Python:从 CSV 文件中的列创建多个文本文件

Posted

技术标签:

【中文标题】Python:从 CSV 文件中的列创建多个文本文件【英文标题】:Python: Creating Multiple Text file from a column in CSV file 【发布时间】:2021-09-17 19:38:29 【问题描述】:

我有一个 CSV 文件,其中包含 3 列 Imagename 、 image_size 和 class。我想创建多个读取 CSV 的文本文件,其中 Imagename 作为文件名,image_size 和 class 作为文件内容。

我需要遍历 Imagename,如果 Imagename 相似,则将相应的 image_size 和 class 添加到单个 txt 文件中。

如果 Imagename 不同,则创建另一个 txt 文件并附加其对应的 image_size、类。

以下是示例 csv:

Image_name   image_size  class
Img_0001     150         brightness 
Img_0001     153         Noise
Img_0001     170         skewness
Img_0002     132         brightness
Img_0002     188         Noise
Img_0002     191         skewness
Img_0003     159         brightness
Img_0003     111         Noise
Img_0003     170         skewness

我需要创建的文件名:

Img_0001.txt 

以及txt文件中的文件内容:

150         brightness 
153         Noise
170         skewnes

【问题讨论】:

【参考方案1】:

使用pd.read_csv 读取您的CSV 文件后,您可以通过以下方式为每个唯一的Image_name 条目创建txt 文件。

for image in df.Image_name.unique():
    fileName = image +".txt"
    file = open(fileName,"w+") #creating a txt file if not already exists
    
    #adding rows for each unique image name 
    for row in df[df.Image_name==image].values:
        file.write(f"row[1] row[2]") #writing to txt file

这里df.Image_name.unique() 返回Image_name 列下的所有唯一值。然后我们为每个名称运行循环并从 CSV 中检索信息并将这些信息添加到 txt 文件中。

【讨论】:

【参考方案2】:

您可以使用pd.read_csv 读取CSV 文件,然后根据Image_name 使用.groupby() 将数据帧“拆分”到多个数据帧。例如:

df = pd.read_csv("your_file.csv")

for filename, g in df.groupby("Image_name"):
    g.to_csv(filename + ".txt", index=False)

创建Img_000*.txt 文件。

【讨论】:

以上是关于Python:从 CSV 文件中的列创建多个文本文件的主要内容,如果未能解决你的问题,请参考以下文章

从 HTML 页面上的多个帖子中提取三个文本项到 csv 或类似文件中?

csv文件的创建和打开

在 python 中将多个 excel '.xlsx' 转换为 '.csv' 文件时,我得到了额外的列?

在读取多个 csv 文件时,是不是可以使用每只股票的名称创建一个名为ticker 的列?

从 CSV 文件中挖掘 R 文本文档(每个文档一行)

如何将数据从 python 列表中的列和行写入 csv 文件?