我有一个文件列表:
files=['D_12-09, batch_1, d_250, T_300, XV_40, I_100-100, C_1.dat',
'D_12-09, batch_1, d_250, T_300, XV_40, I_100-500, C_1, N_after-rest.dat',
'D_12-09, batch_1, d_350, T_180, XV_150, I_100-500, C_1.dat']
我将从中提取以名称编码的信息:
dict_of_titles=[dict(item.split("_") for item in file.split(", ")) for file in files] #https://stackoverflow.com/questions/186857/splitting-a-semicolon-separated-string-to-a-dictionary-in-python
df=pd.DataFrame.from_dict(dict_of_titles)
创建此数据框:
C D I N T XV batch d
0 1.dat 12-09 100-100 NaN 300 40 1 250
1 1 12-09 100-500 after-rest.dat 300 40 1 250
2 1.dat 12-09 100-500 NaN 180 150 1 350
但是我想对存储与该行相对应的文件名的数据框也有一个列“文件” , 例子
C D I N T XV batch d files
0 1.dat 12-09 100-100 NaN 300 40 1 250 'D_12-09, batch_1, d_250, T_300, XV_40, I_100-100, C_1.dat',
1 1 12-09 100-500 after-rest.dat 300 40 1 250 'D_12-09, batch_1, d_250, T_300, XV_40, I_100-500, C_1, N_after-rest.dat',
2 1.dat 12-09 100-500 NaN 180 150 1 350 'D_12-09, batch_1, d_350, T_180, XV_150, I_100-500, C_1.dat'
我正在考虑对文件列表上的 sort 函数,然后将文件作为列附加:
files.sort()
dict_of_titles=[dict(item.split("_") for item in file.split(", ")) for file in files] #https://stackoverflow.com/questions/186857/splitting-a-semicolon-separated-string-to-a-dictionary-in-python
df=pd.DataFrame.from_dict(dict_of_titles)
df['files']=files.
这是否保证文件将以正确的顺序进行解析?
答案 0 :(得分:1)
列表保持其顺序。这意味着无论是否排序(根据特定键),都将始终以相同顺序对其进行扫描。
因此,无论列表顺序如何,这都将保证正确的行对齐:
dict_of_titles=[dict(item.split("_") for item in file.split(", ")) for file in files]
df=pd.DataFrame.from_dict(dict_of_titles)
df['files']=files
使用sort
将给列表(和数据框的行)指定特定的顺序,并且上面的代码仍然有效。