Python - 根据文件名从其他Excel文件中复制特定列到一个新文件中
Python - 根据文件名从其他Excel文件中复制特定列到一个新文件中
我有一个脚本,它生成CSV文件,并按照时间戳的方式命名文件。
-rw-rw-r-- 1 9949 Oct 13 11:57 2018-10-13-11:57:10.796516.csv -rw-rw-r-- 1 9649 Oct 13 12:58 2018-10-13-12:58:12.907835.csv -rw-rw-r-- 1 9649 Oct 13 13:58 2018-10-13-13:58:10.502635.csv
我需要从这些表格中选择C列并将其写入新的CSV文件中。但是,新表格中的列的顺序应该按照现有表格的名称。
例如,来自于11:57生成的文件的C列应该在新表格的A列中,来自于12:58的在B列中,来自于13:38的在C列中。
编辑 - 基于Bilal的输入尝试的代码。它确实将所有现有表格中的C列移动到一个新表格中,但是顺序不正确。它只是随机选择它们,并在新文件的列上不断添加。
import os import re import pandas as pd newCSV = pd.DataFrame.from_dict({}) # 获取csv文件列表并将其放入files files = [f for f in os.listdir('.') if os.path.isfile(f)] results = [] for f in files: if re.search('.csv', f): results += [f] for file in results: df = pd.read_csv(file,usecols=[2]) newCSV = pd.concat((newCSV, df), axis=1) newCSV.to_csv("new.csv")
编辑 - 最终有效的代码,感谢Bilal
import os import re import pandas as pd newCSV = pd.DataFrame.from_dict({}) files = [f for f in os.listdir('.') if os.path.isfile(f)] # 获取csv文件列表并将其放入files results = [] for f in files: if re.search('.csv', f): results += [f] result1=sorted(results) for file in result1: df = pd.read_csv(file,usecols=[2]) newCSV = pd.concat((newCSV, df), axis=1) newCSV.to_csv("new.csv")
问题的出现原因:
根据问题描述,原因是代码中将现有表格中的列复制到新表格中时,它们的顺序与文件名的时间戳不一致。
解决方法:
根据问题描述,解决方法是在代码中添加"sorted(results)",以确保列按照文件名的时间戳顺序复制到新表格中。
以下是解决问题的完整代码:
import pandas as pd newCSV = pd.DataFrame.from_dict({}) # 获取所有csv文件并将它们放入files列表中 for f in files: df = pd.read_csv(f) newCSV = pd.concat((newCSV, df.colum_name), axis=1) # 根据文件名的时间戳对列进行排序 newCSV = newCSV.reindex(sorted(newCSV.columns), axis=1) # 将新表格保存为new.csv文件 newCSV.to_csv("new.csv")
希望这个解决方法对您有帮助!