![](/img/trans.png)
[英]Inserting a column from an existing CSV file into another CSV file using Python
[英]Inserting a column into a csv file using Python
我有一些 csv 文件,其中大約有十幾個列,需要在它們之間的特定位置插入另一列。 該列現在可以是空的或完全相同,它只需要在那里。 我在這里檢查了一堆類似的問題,但沒有一個答案對我有用。 CSV 已導入。
new_col = 'SampleText'
with open(infile.csv, 'r') as f:
with open('outfile.csv', 'w', newline='') as output:
reader = csv.reader(f)
writer = csv.writer(output, delimiter='|')
for row in reader:
new_row = ('|'.join(row[:6]) + new_col + '|'.join(row[7:]))
writer.writerow([new_row])
輸出文件的第一行如下所示。 新列被放置在每行的末尾,沒有分隔符。
RCLT_TYPE|RCLC_NM|RCLCF_DATA_SORC|RCLF_NM|RCLF_DATA_TYPE_NM|RCLF_GRPABLE_IND|RT_LOV_IND|MULTI_SEGMENTATION_IND|RT_FLTBL_IND|RT_FLD_FRMT|History/Current|StorySampleText
以下是第一條線應該是什么樣子,用:
RCLT_TYPE|RCLC_NM|RCLCF_DATA_SORC|RCLF_NM|RCLF_DATA_TYPE_NM|RCLF_GRPABLE_IND|RT_LOV_IND|SampleText|MULTI_SEGMENTATION_IND|RT_FLTBL_IND|RT_FLD_FRMT|History/Current|Story
感謝您對此的任何幫助,謝謝。
您是否考慮過使用名為 pandas 的庫。 所以你可以做
import pandas as pd
new_col = 'SampleText'
df = pd.read_csv('infile.csv', sep='|') # Read in the csv
df[new_col] = 0 # Insert the column at the end, and fill it with all 0's
df.columns = df.columns[:6].tolist()+[new_col]+df.columns[6:-1].tolist() # Reorder the columns, making sure not to use the last column twice because we wanted to reorder it.
df.to_csv('outfile.csv',index=False,sep='|') # Save your new csv
您不必自己管理分隔符,只需修改為每一行返回的列表。
鑒於:
RCLT_TYPE,RCLC_NM,RCLCF_DATA_SORC,RCLF_NM,RCLF_DATA_TYPE_NM,RCLF_GRPABLE_IND,RT_LOV_IND,MULTI_SEGMENTATION_IND,RT_FLTBL_IND,RT_FLD_FRMT,History/Current,Story
然后:
import csv
new_col = 'SampleText'
with open('infile.csv', 'r', newline='') as f:
with open('outfile.csv', 'w', newline='') as output:
reader = csv.reader(f) # No delimiter defined defaults to comma.
writer = csv.writer(output, delimiter='|')
for row in reader: # row is a list of column items
row.insert(7,new_col) # add a column
writer.writerow(row) # writerow expects a list as a parameter.
產生:
RCLT_TYPE|RCLC_NM|RCLCF_DATA_SORC|RCLF_NM|RCLF_DATA_TYPE_NM|RCLF_GRPABLE_IND|RT_LOV_IND|SampleText|MULTI_SEGMENTATION_IND|RT_FLTBL_IND|RT_FLD_FRMT|History/Current|Story
保持接近您的問題,這應該有效:注意,我為文件閱讀器指定了分隔符,因此每一行都作為字段列表加載。 然后,您可以輕松地將值插入此列表並使用您喜歡的分隔符保存它。
new_col = 'SampleText'
with open(path, 'r') as f:
with open('outfile.csv', 'w', newline='') as output:
reader = csv.reader(f, delimiter=',')
writer = csv.writer(output, delimiter='|')
for row in reader:
row.insert(7,new_col)
new_row = '|'.join(row))
writer.writerow(new_row)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.