我有一个代码,我正在写入五个csv文件,在创建所有csv文件后,我想运行一个函数,将所有标题放入csv或xlsx文件中,其中每行代表文件中的一个标题。
所以在一个名为";实例";存在5个csv文件;1.csv"2.csv"5.csv";;对于我想要的代码,将创建一个名为";"示例"中的文件头;,其中第一列是头来自的csv文件的名称,第二列包含头。最终看起来是这样的:例如,文件的Headers的内容,其中1.csv的Header是a、b、c等等
在这一点上,我的python编码是相当基本的,但我肯定认为我想做的是可能的。如果有任何帮助的建议,我们将不胜感激!
经过进一步的挖掘,我找到了一些代码,经过一些轻微的修改:
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)
假设内存中有DataFrame,您只需要创建一个新的DataFrame,我喜欢使用列表字典来创建它,然后为每个文件/数据帧提取列并将其上传到mock 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)
我希望这段代码能有所帮助。从本质上讲,它所做的是迭代所有您想要的文件,它们的名称在file_names
中,然后使用panda读取它们。加载csv后,您可以使用df.columns
提取标题,并将其存储在列表中,然后熊猫将其保存为新的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")