更改为列中找到的所有字符串的序列号,并将dateTime更改为d

2024-04-25 05:47:25 发布

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

我是python初学者,在执行代码时遇到了问题。。 我写了一段代码way:In this 程序我可以得到一个序列号为所有列,但不想列日期的数字,我不知道如何实现它。。请帮帮我

with open("input2.csv", 'r',encoding="utf8") as csvfile: 
            # creating a csv reader object 
            reader = csv.DictReader(csvfile, delimiter=',')


            data = {}
            for row in reader:
    #         print(row)
                for header, value in row.items():
                    try:
                        data[header].append(value)
                    except KeyError:
                        data[header] = [value]

            # Loop through all keys
            for key in data.keys():
                values = data[key]

                things = list(sorted(set(values), key=values.index))

                for i, x in enumerate(data[key]):
                    data[key][i] = things.index(x) + 1
    #                 print(data[key][i])
                    NewData=data[key][i]
                    print(NewData)

            with open("OuputFile.csv", "w") as outfile:
                writer = csv.writer(outfile)
                # Write headers
                writer.writerow(data.keys())
                # Make one row equal to one value from each list
                rows = zip(*data.values())
                # Write rows
                writer.writerows(rows)

其中a已获取如下输入数据:

 job_Id FirstName   LastName    Address     Email           Date/Time

  1 snehil      singh       marathalli  ss@gmail.com        12/10/2011:02:03:20
  2 salman      khan        marathalli  ss@gmail.com        12/11/2011:03:10:20
  3 Amir        khan        HSR     ar@gmail.com        11/22/2009:09:03:20
  4 Rakhesh     kumar       HSR     rakesh@gmail.com    09/15/2010:02:03:55
  5 Ram     sharma      marathalli  r@gmail.com     01/10/2014:12:03:20
  6 Shyam       shahi       BTM     ss@gmail.com        12/17/2012:01:03:20
  7 salman      khan        HSR     ss@gmail.com        11/08/2016:15:03:20
  8 Amir        khan        BTM     ar@gmail.com        07/10/2013:04:02:30
  9 snehil      singh       Majestic    sne@gmail.com       03/20/2018:02:03:20

在这个程序中,我有一个特定的列,其中需要执行以下操作:FirstName和LastName列被lambda函数替换为“Fullname”。 日期/时间列只能打印日期,不能打印时间。 完成此操作后,所有字符串都应替换为数字序列,重复的字符串应打印相同的数字

输出应如下所示:

job_Id  FullName    Address  Email  Date
    1   1            1         1    12/10/2011
    2   2            1         1    12/11/2011
    3   3            2         2    11/22/2009
    4   4            2         3    09/15/2010  
    5   5            1         4    01/10/2014
    6   6            3         1    12/17/2012
    7   2            2         1    11/08/2016
    8   3            3         2    07/10/2013
    9   1            4         5    03/20/2018

请帮我找到这个输出,任何逻辑都可以……但是不使用熊猫数据帧


Tags: csvkeyincomfordatavalue数字