簡體   English   中英

使用python將多行列表寫入csv文件

[英]writing a list to multiple rows into csv file using python

如何將以下列表拆分為多行(3行)並使用python寫入csv文件。

holidays = ['2017-01-01', "New Year's Day", 'NSW', '2017-01-02', "New Year's Day (Observed)", 'NSW', '2017-01-26', 'Australia Day', 'NSW', '2017-04-14', 'Good Friday', 'NSW', '2017-04-15', 'Easter Saturday', 'NSW']

以下代碼將所有值寫入到csv中的單列中。

Title = ('date', 'name','state')

with open(fileName,"w") as output:
    writer = csv.writer(output,lineterminator='\n')
    for val in lstAll:
        writer.writerow([val])

使用pandas的解決方案

import pandas as pd

holidays = ['2017-01-01', "New Year's Day", 'NSW', '2017-01-02', "New Year's Day (Observed)", 'NSW', '2017-01-26', 'Australia Day', 'NSW', '2017-04-14', 'Good Friday', 'NSW', '2017-04-15', 'Easter Saturday', 'NSW']
col_titles = ('date', 'name','state')

data = pd.np.array(holidays).reshape((len(holidays) // 3, 3))

pd.DataFrame(data, columns=col_titles).to_csv("holidays.csv", index=False)

哪里:

  1. pd.np.array(holidays)holidays轉換為numpy.array
  2. .reshape((len(holidays) // 3, 3))將數組的結構更改為三個“列”
  3. pd.DataFrame(data, columns=col_titles)創建一個pandas.Dataframe從數據和col_titles
  4. .to_csv("holidays.csv", index=False)將數據.to_csv("holidays.csv", index=False)保存到CSV文件

內容holidays.csv

date,name,state
2017-01-01,New Year's Day,NSW
2017-01-02,New Year's Day (Observed),NSW
2017-01-26,Australia Day,NSW
2017-04-14,Good Friday,NSW
2017-04-15,Easter Saturday,NSW

請注意,如果在to_csv使用index=False ,則不會包含該索引。

您可以使用列表切片以3的塊形式處理列表:

with open(fileName, "w") as output:
    writer = csv.writer(output, lineterminator='\n')
    for i in range(0, len(lst), 3)):
        writer.writerow(lst[i:i+3])

這是一個冗長的示例,顯示了列表解釋的工作方式:

with open('outfile.csv', 'w') as outfile:
    writer = csv.writer(outfile)
    rows = [[holiday, holidays[i+1], holidays[i+2]] for i, holiday in enumerate(holidays) if i % 3 == 0]
    for row in rows:
        writer.writerow(row)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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