首页 > 解决方案 > 在python中按半小时间隔对文件列表进行分组

问题描述

我正在使用 python 2.7,我的文件夹中有一个文件列表,有数千个文件看起来像这样:

20180828-024308.dat
20180828-024434.dat
20180828-030335.dat
20180828-032114.dat
20180828-040041.dat
..........

它们是年、月、日、小时、分钟和秒

我想将所有这些文件分组为半小时间隔,(注意:年月日没有变化)

我想要这样的东西:

1: [20180828-024308.dat,20180828-024434.dat]
2: [20180828-030335.dat,20180828-032114.dat]
3: [20180828-040041.dat,....]
.......

我认为列表对我来说很好,或者可能是数据框。

谢谢您的帮助!

标签: pythonpandaslistdataframegroup-by

解决方案


来自:-我的理解,假设您的数据框如下所示:

print(df)

                 files
0  20180828-024308.dat
1  20180828-024434.dat
2  20180828-030335.dat
3  20180828-032114.dat
4  20180828-040041.dat

df['file_time']= pd.to_datetime(df['files'].str.split('.dat').str[0])
df.groupby([pd.Grouper(key='file_time',freq='1800s')])['files'].apply(list).reset_index()

输出:

            file_time                                       files
0 2018-08-28 02:30:00  [20180828-024308.dat, 20180828-024434.dat]
1 2018-08-28 03:00:00  [20180828-030335.dat, 20180828-032114.dat]
2 2018-08-28 03:30:00                                          []
3 2018-08-28 04:00:00                       [20180828-040041.dat]

注意:由于 3:30-4 范围内没有文件,因此列表为空。


推荐阅读