簡體   English   中英

使用 Python 在 csv 文件中插入一列

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM