[英]Adding new column to CSV in Python
我想在Python中為CSV添加新列。 我了解在Python中,我將必須運行CSV並重寫一個新的CSV作為輸出以添加列。
我想通過每個用戶ID運行並為其分配一個唯一ID。
這是我的輸入 :
UserID,name
a,alice
a,alice
b,ben
c,calvin
c,calvin
c,calvin
這是我想要的輸出 :
UniqueID,UserID,name
1,a,alice
1,a,alice
2,b,ben
3,c,calvin
3,c,calvin
3,c,calvin
我剛接觸Python,想知道是否有人可以向我展示如何做到這一點。 謝謝。
Here is my code so far:
import csv
import operator
temp_index = 0
with open("./coordinates.csv") as all_coordinates_csv:
coordinate_reader = csv.reader(all_coordinates_csv, delimiter=",")
sort = sorted(coordinate_reader,key=operator.itemgetter(0))
with open("./sorteduserid.csv","wb") as sorteduser_csv:
csv_writer = csv.writer(sorteduser_csv,delimiter=",")
csv_writer.writerows(sort)
試試看我的代碼:
import csv
import uuid
is_first = True
with open('test.csv', newline='') as input_file:
with open('output.csv', 'w', newline='') as output_file:
writer = csv.writer(output_file)
reader = csv.reader(input_file)
for row in reader:
if is_first:
row.insert(0, 'UniqueID')
is_first = False
else:
row.insert(0, str(uuid.uuid4()))
writer.writerow(row)
此解決方案基於您自己的嘗試:
import csv
import operator
from itertools import groupby
with open("./coordinates.csv") as all_coordinates_csv:
coordinate_reader = csv.reader(all_coordinates_csv, delimiter=",")
sort = sorted(coordinate_reader,key=operator.itemgetter(0))
grouped = []
for key, group in groupby(sort, lambda x: x[0]):
grouped.append(list(group))
data_out = [];
data_out.append(['Unique_ID', (grouped[0])[0][0], (grouped[0])[0][1]])
user_id = 1
for group in grouped[1:]:
for user in group:
data_out.append([user_id,user[0],user[1]])
user_id += 1
with open("./sorteduserid.csv","wb") as sorteduser_csv:
csv_writer = csv.writer(sorteduser_csv,delimiter=",")
csv_writer.writerows(data_out)
在對輸入進行排序后,程序將使用groupby
來按sort
的UserID對值進行分組。 然后,它將在循環中使用這些分組的值為每個UserID分配一個唯一的ID。 在循環之前,它將使用User_ID
條目擴展標題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.