Python 向现有CSV文件中添加列

Python 向现有CSV文件中添加列,python,python-3.x,csv,Python,Python 3.x,Csv,我正在尝试将新列添加到现有csv中,该csv已具有如下所示的行和列: 我希望它将所有新列名附加到第4列之后的列中 我目前拥有的代码是将所有新列添加到csv的底部: def extract_data_from_report3(): with open('OMtest.csv', 'a', newline='') as f_out: writer = csv.writer(f_out) writer.writerow( ['OMGro

我正在尝试将新列添加到现有csv中,该csv已具有如下所示的行和列:

我希望它将所有新列名附加到第4列之后的列中

我目前拥有的代码是将所有新列添加到csv的底部:

def extract_data_from_report3():
    with open('OMtest.csv', 'a', newline='') as f_out:
        writer = csv.writer(f_out)
        writer.writerow(
            ['OMGroup:OMRegister', 'OMGroup', 'OMRegister', 'RegisterType', 'Measures', 'Description', 'GeneratedOn'])
      

有什么方法可以有效地做到这一点吗?

您可以使用
pandas
lib,而无需遍历这些值。这里有一个例子

new_header = ['OMGroup:OMRegister', 'OMGroup', 'OMRegister', 'RegisterType', 'Measures', 'Description', 'GeneratedOn']
# Import pandas package  
import pandas as pd 

my_df = pd.read_csv(path_to_csv)
for column_name in new_header:
    new_column = [ ... your values ...] #should be a list of your dataframe size
    my_df[column_name] = new_column
请记住,新列的大小应该与要工作的表的行数相同

如果只需要添加不带值的新列,则可以执行以下操作:

for column_name in new_header:
    new_column = ["" for i in range(len(mydf.index))] #should be a list of dataframe size
    my_df[column_name] = new_column
然后,您可以通过以下方式回写csv:

my_df.to_csv(path_to_csv)


这是否回答了您的问题?另请注意一个相关的问题-使用
csv.DictReader
csv.DictWriter
@marcorrivera8是的,您添加的是一个新列,而不是一个新列row@marcorivera8请记住,这里
my_df['OMGroup:OMRegister']
我使用列表的第一个值作为列名。我假设这是我从列表中看到的列名
['OMGroup:OMRegister','OMGroup','OMRegister','RegisterType','Measures','Description','GeneratedOn']
看起来更像是一个新的标题,而不是行中的实际值。我正在将此代码与行内容来自的BeautifulSoup和XML数据合并。如果我能让它正常工作,我会让你知道的。谢谢你的帮助@很遗憾,我不知道什么是好汤。我建议你提出一个新问题(最好不要在这个问题上进一步扩大你的问题,保持问题的具体性,不要太宽泛)。请不要忘记接受第一个问题的最佳答案