我有一個要寫入五個 csv 檔案的代碼,在創建所有 CSV 檔案后,我想運行一個函式將所有標題放入 csv 或 xlsx 檔案中,其中每一行代表一個標題檔案。
所以在一個名為“Example”的檔案夾中有5個csv檔案,分別稱為“1.csv”、“2.csv”...“5.csv”;對于我想要的代碼,將創建一個名為“示例中檔案的標題”的新檔案,其中第一列是標題來自的 csv 檔案的名稱,第二列包含標題。最終看起來像這樣:example 中檔案的 Headers 的內容,其中 1.csv 的 headers 是 a,b,c 等等。
在這一點上,我的 python 編碼相當基礎,但我絕對認為我想做的事情是可能的。任何幫助的建議將不勝感激!
uj5u.com熱心網友回復:
經過更多的挖掘,經過一些細微的修改,我能夠找到一些符合我要求的代碼:
import csv
import glob
import pandas as pd
def headers():
path = r'path to folder containing csv files/'
all_files = glob.glob(path "*.csv")
files = all_files
myheaders = ['filename', 'header']
with open("Headers of foldername.csv", "w", newline='') as fw:
cw = csv.writer(fw, delimiter=",")
for filename in files:
with open(filename, 'r') as f:
cr = csv.reader(f)
# get title
for column_name in (x.strip() for x in next(cr)):
cw.writerow([filename, column_name])
file = pd.read_csv("Headers of foldername.csv")
file.to_csv("Headers of foldername.csv", header=myheaders, index=False)
uj5u.com熱心網友回復:
鑒于您在記憶體中有 DataFrame,您只需要創建一個新的 DataFrame,我喜歡使用串列字典來創建它,然后為每個檔案/資料框提取列并將其上傳到模擬 DataFrame。稍后您可以將新的 DataFrame 保存到檔案中。
summary_df = {
'file_name': list(),
'headers': list()}
for file, filename in zip(list_of_files, list_of_names):
aux_headers = file.columns.to_list()
summary_df['headers'] = aux_headers
summary_df['file_name'] = [filename] * len(aux_headers)
summary_df = pd.DataFrame(summary_df)
uj5u.com熱心網友回復:
我希望這段代碼有所幫助。本質上,它的作用是遍歷您想要的所有檔案,file_names然后使用 pandas 讀取它們的名稱。加載 csv 后,您可以提取標題df.columns并將其存盤在一個串列中,然后由 pandas 將其另存為新的 csv。
import pandas as pd
header_names = []
file_names = ['1.csv', '2.csv']
for file_name in file_names:
df = pd.read_csv(file_name)
header_names.extend(list(df.columns))
new_df = pd.DataFrame(l)
new_df.to_csv("headers.csv")
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/443908.html
下一篇:如何根據創建的列對輸出進行排序?
