我有大量的二维文件,我从中计算 XX 参数,如下所示。
'2019-10-12_17-43.csv',
'2019-10-12_17-42.csv',
'2019-10-12_17-41.csv',
'2019-10-12_17-44.csv',
'2019-10-12_17-40.csv',
'2019-10-11_17-40.csv',
......................
and so on...
我能够创建一个文件名列表并计算该特定文件的 XX 参数。在随后的计算之后,我创建了一个名为 YY 的数据框,其中包含参数以及包含从中计算它的文件名的列。在计算出的 XX 参数的某个值的基础上,我想绘制所有产生它的二维数据。我还从数据框的列中创建了一个文件名列表。显然代码更长到 XX 参数计算,但为了从列表中选定的文件名中读取数据,我在最后一个块中使用以下代码:
# arbitrary functions
def Aval (a, b):
..............
def Bval (a, b):
..............
file_path = r"C:\Users\Desktop\Data"
read_files = glob.glob(os.path.join(file_path,"*.csv"))
# generating the list of filenames
file_list = []
XYZ_array = []
ABC_array = []
for (root, dirs, files) in os.walk(file_path):
for filenames in files:
file_list.append(filenames)
df= pd.read_csv(os.path.join(root, filenames), header=0)
#Calculation from the files
ABC = ..................
XYZ = ..................
ABC_array.append(ABC)
XYZ_array.append(XYZ)
#creating a dataframe from the arrays
newdf = pd.DataFrame ({'ABC': ABC_array, 'XYZ':XYZ_array, 'Filename':file_list })
生成的数据框如下所示:
Timestamp ABC XYZ Filename
2019-10-11_07-52 1.934985 0.187962 2019-10-11_07-52.csv
2019-10-11_07-53 1.926435 0.200828 2019-10-11_07-53.csv
2019-10-11_07-54 1.922927 0.215204 2019-10-11_07-54.csv
2019-10-11_07-55 1.951818 0.216678 2019-10-11_07-55.csv
2019-10-11_07-56 1.922523 0.245144 2019-10-11_07-56.csv
... ... ... ...
2019-10-13_18-21 2.028409 1.149067 2019-10-13_18-21.csv
2019-10-13_18-22 2.027896 1.015862 2019-10-13_18-22.csv
2019-10-13_18-23 2.013004 0.871320 2019-10-13_18-23.csv
2019-10-13_18-24 1.991576 0.755164 2019-10-13_18-24.csv
2019-10-13_18-25 1.908259 0.570786 2019-10-13_18-25.csv
ABC 值分为三个 bins = [1.76,1.86,1.96]
Abc_sorted = newdf.sort_values('ABC')
Abc_sorted['Bin_names'] = pd.cut(Abc_sorted['ABC'], bins, labels=['1.76','1.86','1.96'])
T_df = Abc_sorted.sort_values(by=['Bin names']).dropna()
产生如下数据框:
Timestamp ABC XYZ Filename Bin_names
2019-10-12_17-43 1.769676 72.841836 2019-10-12_17-43.csv 1.76
2019-10-12_17-42 1.771429 74.583635 2019-10-12_17-42.csv 1.76
2019-10-12_17-41 1.774526 76.104981 2019-10-12_17-41.csv 1.76
2019-10-12_17-44 1.774678 68.314091 2019-10-12_17-44.csv 1.76
2019-10-12_17-40 1.779273 76.589191 2019-10-12_17-40.csv 1.76
... ... ... ... ... ... ... ... ... ...
2019-10-12_09-48 1.988249 85.279987 2019-10-12_09-48.csv 1.96
2019-10-13_09-04 1.988266 28.716690 2019-10-13_09-04.csv 1.96
2019-10-12_11-27 1.988597 76.978562 2019-10-12_11-27.csv 1.96
2019-10-11_16-19 1.985438 76.343396 2019-10-11_16-19.csv 1.96
2019-10-11_08-11 1.999933 0.251199 2019-10-11_08-11.csv 1.96
基于 bin_name 1.76 和文件名创建一个新的数据框,并创建一个包含文件名的列表:
ndf = T_df.loc[Total_df.Bin_names =='1.76'][['Filename', 'Bin_names']]
filename_list=ndf['Filename'].tolist()
这导致数据框为:
Filename Bin_names
2019-10-12_17-43.csv 1.76
2019-10-12_17-42.csv 1.76
2019-10-12_17-41.csv 1.76
2019-10-12_17-44.csv 1.76
2019-10-12_17-40.csv 1.76
现在的主要任务是从主目录导入 filename_list 中的文件:
for i in range(len(filename_list)):
print (filename_list[i])
for file in read_files:
if fnmatch.fnmatch(file, filename_list[i]):
print(file)
其中read_files
是路径,是路径file
中的文件名,filename_list
是包含多个文件的列表。我已将数据分箱为 3 个不同的值,我只想导入 ABC 参数值为 1.76 的文件。但这似乎不起作用,并且没有返回任何内容。有人可以帮忙吗?