熊猫:排序是否可以保证函数在列表上的执行顺序?

时间:2019-09-17 11:17:00

标签: python pandas dataframe

我有一个文件列表:

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.

这是否保证文件将以正确的顺序进行解析?

1 个答案:

答案 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将给列表(和数据框的行)指定特定的顺序,并且上面的代码仍然有效。