2017-02-04 69 views
1

我需要一些数据,我需要把它写入一个列,但以不同的字符串的Python:将数据写入到特定的细胞

df = pd.DataFrame() 
list1 = ['111', '333', '555', '777', '8888'] 
list2 = [1, 5, 56, 44, 2] 
with open('hh1.csv', 'a') as f: 
    writer = csv.writer(f) 
    for (elem1, elem2) in zip(list1, list2): 
     writer.writerow([elem1]) 

我想写elem1与数elem2的细胞,我的意思是 111A1333 in A5等 我该怎么做?

+0

你想在中间行写什么? –

+0

@ Jean-FrançoisFabre它将是空的,但我需要在循环中编写它,并且数字可能不是为了 –

回答

1

因此,根据list2最大索引,用空值初始化您的列表。然后,使用zip根据list1,list2索引/值元组填充它,就像您在尝试中那样。

list1 = ['111', '333', '555', '777', '8888'] 
list2 = [1, 5, 56, 44, 2] 
rows_to_write = [[""] for _ in range(max(list2))] 
for i,v in zip(list2,list1): 
    rows_to_write[i-1][0] = v 

此时rows_to_write值得:

[['111'], ['8888'], [''], [''], ['333'], [''], [''], [''], [''], [''], [''], [''], [''], [''], [''], [''], [''], [''], [''], [''], [''], [''], [''], [''], [''], [''], [''], [''], [''], [''], [''], [''], [''], [''], [''], [''], [''], [''], [''], [''], [''], [''], [''], ['777'], [''], [''], [''], [''], [''], [''], [''], [''], [''], [''], [''], ['555']] 

然后写在1个指令中的行(不附加)

with open('hh1.csv', 'w',newline='') as f: # python 3 
    csv.writer(f).writerows(rows_to_write) 

这将创建一个单行 “疏” csv文件。 (open('hh1.csv', 'wb') as f for python 2)

+0

对于我在工作中不正确。 –

+0

它写'111'到单元格'1,113,225' –

+0

这是不可能的。这些值不在'list2'范围内......哦,你必须使用'w'模式而不是'a'!从零重写文件。 –