将两个列合并并存储在cs中的新列中

2024-09-30 14:36:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我没有得到期望的输出。我必须将“itemnumber”列与“imagename”列合并并保存到该csv中的另一列“image”。它还会在image文件夹中创建一个重复的图像“B001_B001.jpg”。在

我的意见是:

  ItemNumber  UPC Keyword ImageName ImageWChain Description     
0       B001  123     XYZ      B001        B001       Test1  
1       B002  456     GDH      B002        B002       Test2 
2       B003  789     GFR      B003        B003       Test3 

我的预期产出是:

^{pr2}$

到目前为止,我得到的是:

import csv
import os
from os.path import splitext        # splits name & extension from a file
import shutil                       # making a duplicate copy of a file
import logging

class Image:
    def image_fix(self):

        #open and read csv
        with open('rosary.csv') as csvfile:

        #create list for sku, old_imagename_column_1, old_imagename_column_1 
        #and renamed new_imagename
                keyList = []                      #for ItemNumber
                itemList = []                     #for ImageName
                itemList1 = []                    #for ImageWChain
                renamedList = []                  #for Renamed NEW_ImageName

                spamreader = csv.reader(csvfile, delimiter=",")

        #storing all the columns into list
                for row in spamreader:
                    keyList.append(row[0])
                    itemList.append(row[3])
                    itemList1.append(row[4])

                    renamedList.append(row[6])

        # processing for ImageName
        for item in enumerate(itemList):
            oldFileName = name
            newFileName = '{}_{}{}'.format(name, keyList[item[0]])


            # check if the image file existsin image folder for ImageName column

            if (os.path.isfile(oldFileName)):

                    shutil.copy2(oldFileName, newFileName)     #make a duplicate image of every itemname
                    renamedList[item[0]] = '{}_{}{}'.format(oldFileName, keyList[item[0]])


            # write the final output in new csv
            with open('rosary.csv','wb') as my_csv:
                 csvWriter = csv.writer(my_csv,delimiter=',')
                 for row in zip(keyList, itemList, itemList1, renamedList):
                     # printing row in order
                     print(row[0] + '\t' + '\t' + row[3] + '\t' + '\t' + 
                           row[4] + '\t' + '\t' + row[6])
                     csvWriter.writerow(row)

if __name__=="__main__":
    obj = Image()
    obj.image_fix()

Tags: csvnameinimageimportforitemrow
1条回答
网友
1楼 · 发布于 2024-09-30 14:36:47

如果你能用熊猫:

import pandas as pd

df = pd.read_csv('rosary.csv')
df['Image'] = df.ImageName + "_" + df.ImageWChain
df.to_csv('rosary.csv')

>>> df
       Unnamed: 0 Description ImageName ImageWChain ItemNumber Keyword  UPC      Image
0           0       Test1      B001        B001       B001     XYZ  123  B001_B001
1           1       Test2      B002        B002       B002     GDH  456  B002_B002
2           2       Test3      B003        B003       B003     GFR  789  B003_B003

要制作新的图像副本:

^{pr2}$

相关问题 更多 >