2017-02-04 60 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'!從零重寫文件。 –