首页 > 解决方案 > 从多个目录中的 txt 文件创建 dict

问题描述

我有一系列目录的结构有点像:

例如

basepath>abcd
basepath>abcd>aba
basepath>abcd>aba>abb
basepath>abcd>aba
basepath>abcd>abd
basepath>abcd>abd>add

除了基本路径,目录名称是随机生成的字符串。有几百个不同的目录。

在每个目录中,我有 2 个文件,“body.txt”和“timestamp.txt”。作为最终目标,我希望在一个共同的时间范围内收集每个身体,例如将每个身体分成 1 小时间隔。timestamp.txt 中的数据是秒的整数。

我想象第一个挑战将是获取每个目录和子目录的列表。谁能建议我可以使用什么来获取子目录列表basepath

然后我需要一种方法来排序和组织这些数据。我知道 Pandas 有一种方法可以按日期拆分数据,这可能是我所知道的最佳选择。如果有人对不同的方法有任何建议,我可以这样做,我很乐意听到。

作为我如何组织+拆分数据的示例:

Timestamp(s)        Body
300                  a
301                  b
304                  c
306                  d
301                  e
304                  f
301                  g
306                  h
308                  i
307                  j

Split as an interval of 2 secs

Timestamp(s)        Body
300                  a
301                  b
301                  e
301                  g

304                  c
304                  f

306                  d
306                  h

307                  j
308                  i

标签: pythonpython-3.x

解决方案


# I hope you are able to create the DataFrame
df = pd.DataFrame([[300 ,'a'],
[301 ,'b'],
[304 ,'c'],
[306 ,'d'],
[301 ,'e'],
[304 ,'f'],
[301 ,'g'],
[306 ,'h'],
[308 ,'i'],
[307 ,'j']], columns=['Timestamp(s)', 'Body'])

# Now that you have the DataFrame
df.sort_values(by=['Timestamp(s)'], inplace=True)

df.sort_values(by=['Timestamp(s)'], inplace=True)
df['group_id'] = df['Timestamp(s)'].apply(lambda x: x-x%2)
        
for group_name, group in df.groupby(['group_id']):
    print(group)

输出

0           300    a       300
1           301    b       300
4           301    e       300
6           301    g       300

2           304    c       304
5           304    f       304

3           306    d       306
7           306    h       306
9           307    j       306

8           308    i       308

推荐阅读