Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在已填充的CSV中间添加Python列表_Python_List_Loops_Csv - Fatal编程技术网

在已填充的CSV中间添加Python列表

在已填充的CSV中间添加Python列表,python,list,loops,csv,Python,List,Loops,Csv,我正在将一个电话号码列表从注册表生成到Python列表中。然后我想迭代这个列表并把它添加到已经存在的CSV文件中间的一个新列中。该列是CSV中的索引9。下面是我试图编写的代码,但我得到一个“列表索引超出范围错误” 导入csv 以open('input.csv','r')作为csvinput: 打开('output.csv','w')作为csvoutput: writer=csv.writer(csvoutput) i=0 对于csv.reader(csvinput)中的行: 行[9]=write

我正在将一个电话号码列表从注册表生成到Python列表中。然后我想迭代这个列表并把它添加到已经存在的CSV文件中间的一个新列中。该列是CSV中的索引9。下面是我试图编写的代码,但我得到一个“列表索引超出范围错误”

导入csv
以open('input.csv','r')作为csvinput:
打开('output.csv','w')作为csvoutput:
writer=csv.writer(csvoutput)
i=0
对于csv.reader(csvinput)中的行:
行[9]=writer.writerow(电话列表[i])
i+=1
---------------------------------------------------------------------------
索引器回溯(最后一次最近调用)
在()
6i=0
7对于csv.reader(csvinput)中的行:
---->8行[9]=writer.writerow(电话列表[i])
9i+=1
索引器:列表索引超出范围

非常感谢您的帮助。

您的代码应该可以正常工作,您可以使用
zip()
同时迭代输入文件和电话列表,而不是使用
i
变量作为数字索引:

for row, phone in zip(csv.reader(csvinput), phone_list):
    row[9] = phone
    writer.writerow(row)
现在,如果您仍然得到
索引器
,这意味着您的csv文件有一行首先不包含10列(索引9是索引从0开始的第10列)。仔细检查您的csv文件。请尝试此测试代码以检查:

for row, phone in zip(csv.reader(csvinput), phone_list):
    if len(row) < 10:
         print('FOUND A ROW WITH {} COLUMNS: '.format(len(row)), row)
    else:
         row[9] = phone
    writer.writerow(row)

在for循环中,将新列添加到数组“row”,然后将该行写入csv

for row in reader:
     row.insert(9, phone_list[i])
     writer.writerow(row)

如果您使用的是蟒蛇,或者您了解熊猫

import pandas as pd.  # You import the pandas library

input = pd.read_csv("input.csv") #your import csv
output = pd.read_csv("output.csv") #your export csv

input_array = list(input['#Name of column']) #use this if you know the name of the column
input_array = list(input.iloc[:,#index of column]) # use this if you know the index number of the column, index starts from 0

output = output.insert(loc=#the index you want; in this case 9 for the 10th column, column='Name of the new column', value=input_array) # you are inserting the array into output.csv

output.to_csv("path and output.csv",index = False) # we are writing a file, index = false means no new index row columns to be added.





import pandas as pd.  # You import the pandas library

input = pd.read_csv("input.csv") #your import csv
output = pd.read_csv("output.csv") #your export csv

input_array = list(input['Name of column']) #use this if you know the name of the column
input_array = list(input.iloc[:,0]) # Assuming input csv has only 1 column

output = output.insert(loc=9, column='New_column_name', value=input_array) # assuming the array is to be inserted into output.csv, column 10, in which case its 9 in pandas

output.to_csv("path and output.csv",index = False) # we are writing a file, index = false means no new index row columns to be added.

欢迎回答有关StackOverflow的第一个问题。此代码段不完整,因为您没有向我们显示
input.csv
文件。您也不会显示错误消息的完整回溯。请阅读并跟随。快来吧!现在我必须删除我键入的所有内容!如果我可以添加,如果行少于10列,那么您可以使用
row.append(电话)
我仍然收到以下错误,即使我的文件肯定有10列。--------------------------------------------------------------索引器回溯(最近一次呼叫最后一次)在()1中,用于第行,电话在zip中(csv.reader('input.csv'),电话列表):--->2行[9]=电话3写入器。writerow(row)索引器:列表分配索引超出range@CheerSal我在答案末尾添加了代码来检查csv文件,你能运行它以确保这不是问题吗?另外,您能编辑问题并添加完整的错误回溯吗?@CheerSal现在我添加了示例代码,当您的列数少于10列时,将列数增加到10。您能提供一个将插入的代码示例吗?我无法理解您的参数?好的,这是一个csv导入到csv中。我需要在csvIf中插入一个列表。如果您的Input.csv文件中有需要放入output.csv的数字列表。带有input_数组的行将input.csv文件转换为列表。如果您已经有一个列表,请将其添加到output.csv中,只需将其放入值中,在output.insert.No行中,我有一个不在csv文件中的列表。这是一个Python列表,但您确实理解我的解释,对吗?您可以将创建的列表插入output.csv中,代码位于具有output.insert的行中,其中显示列表中的值'str'对象没有属性'insert'导入csv,其中open('input.csv','r')作为读卡器:with open('output.csv','w')作为csvoutput:writer=csv.writer(csvoutput)i=0表示读卡器中的行:row.insert(9,电话列表[i])writer.writerow(row)i+=1'如果这是您使用的代码,您还没有创建csv读卡器或写卡器对象,只有打开的文件对象('input.csv','r')作为读卡器:打开的文件对象('output.csv','w')作为CSVOUT输出:否,您需要创建一个csv.reader()对象并指向您的文件对象,您已经创建了一个csv.writer()对象
for row in reader:
     row.insert(9, phone_list[i])
     writer.writerow(row)
import pandas as pd.  # You import the pandas library

input = pd.read_csv("input.csv") #your import csv
output = pd.read_csv("output.csv") #your export csv

input_array = list(input['#Name of column']) #use this if you know the name of the column
input_array = list(input.iloc[:,#index of column]) # use this if you know the index number of the column, index starts from 0

output = output.insert(loc=#the index you want; in this case 9 for the 10th column, column='Name of the new column', value=input_array) # you are inserting the array into output.csv

output.to_csv("path and output.csv",index = False) # we are writing a file, index = false means no new index row columns to be added.





import pandas as pd.  # You import the pandas library

input = pd.read_csv("input.csv") #your import csv
output = pd.read_csv("output.csv") #your export csv

input_array = list(input['Name of column']) #use this if you know the name of the column
input_array = list(input.iloc[:,0]) # Assuming input csv has only 1 column

output = output.insert(loc=9, column='New_column_name', value=input_array) # assuming the array is to be inserted into output.csv, column 10, in which case its 9 in pandas

output.to_csv("path and output.csv",index = False) # we are writing a file, index = false means no new index row columns to be added.