【问题标题】:Spliting a dataframe into multiple 5-second dataframes in Python在 Python 中将一个数据帧拆分为多个 5 秒的数据帧
【发布时间】:2018-04-18 06:58:26
【问题描述】:

我有一个相对较大的数据集,我想在 Python 中根据包含日期时间对象的列将其拆分为多个数据帧。列中的值(我想要拆分数据框)以以下格式给出:

  1. 2015-11-01 00:00:05

You may assume the dataframe looks like this.

我如何将数据帧拆分为 5 秒间隔

  1. 第一个数据帧2015-11-01 00:00:00 - 2015-11-01 00:00:05

  2. 第二个数据帧2015-11-01 00:00:05 - 2015-11-01 00:00:10,以此类推。

我还需要计算每个结果数据框中的观察次数。换句话说,如果我能得到另一个包含 2 列的数据框,那就太好了:第 1 列表示拆分组(此列的值无关紧要:它们可能只是 1、2、3、.. 表示的顺序5 秒间隔),第 2 列显示属于各个间隔的观察次数

【问题讨论】:

  • 这并不难。您尝试过什么,您的数据框在哪里?我们希望看到数据,而不是解释。
  • 问题已被编辑。有一个指向数据框的超链接。

标签: python pandas datetime dataframe pandas-groupby


【解决方案1】:

您可以按Date的楼层分组5s

f = '{:%Y-%m-%d %H:%M:%S}'.format

dfs = {f(k): g for k, g in df.groupby(df.Date.dt.floor('5s'))}

【讨论】:

  • 感谢您的帮助。我还需要计算每个结果数据框中的观察次数。换句话说,如果我能得到另一个包含 2 列的数据框,那就太好了:第 1 列表示拆分组,第 2 列显示属于各个区间的观察数。
  • @ArmanAsryan 这不是您最初问题的一部分,所以请不要在这里问。为此打开一个新问题。
  • @cᴏʟᴅsᴘᴇᴇᴅ 主要问题已被编辑。这两个问题紧密相连。
  • @ArmanAsryan 的重点是,这是对您浪费时间问一个问题并在他们回答后更改问题的人的不尊重。最好将您提出的问题视为一个问题。标记已接受的答案,然后用其他详细信息提出新问题
  • @piRSquared 我确实创建了一个新的组合问题:stackoverflow.com/questions/47133250/…
【解决方案2】:

我认为最好存储多个DataFrames 是dict

rng = pd.date_range('2015-11-01 00:00:00', periods=100, freq='S')
df = pd.DataFrame({'Date': rng, 'a': range(100)})  
print (df.head(10))
                 Date  a
0 2015-11-01 00:00:00  0
1 2015-11-01 00:00:01  1
2 2015-11-01 00:00:02  2
3 2015-11-01 00:00:03  3
4 2015-11-01 00:00:04  4
5 2015-11-01 00:00:05  5
6 2015-11-01 00:00:06  6
7 2015-11-01 00:00:07  7
8 2015-11-01 00:00:08  8
9 2015-11-01 00:00:09  9

dfs={k.strftime('%Y-%m-%d %H:%M:%S'):v for k,v in 
                 df.groupby(pd.Grouper(key='Date', freq='5S'))}

print (dfs['2015-11-01 00:00:00'])
                 Date  a
0 2015-11-01 00:00:00  0
1 2015-11-01 00:00:01  1
2 2015-11-01 00:00:02  2
3 2015-11-01 00:00:03  3
4 2015-11-01 00:00:04  4

print (dfs['2015-11-01 00:00:05'])
                 Date  a
5 2015-11-01 00:00:05  5
6 2015-11-01 00:00:06  6
7 2015-11-01 00:00:07  7
8 2015-11-01 00:00:08  8
9 2015-11-01 00:00:09  9

【讨论】:

  • 感谢您的帮助。我还需要计算每个结果数据框中的观察次数。换句话说,如果我能得到另一个包含 2 列的数据框,那就太好了:第 1 列表示拆分组,第 2 列显示属于各个区间的观察数。
  • 那么这将是新列中我的样本中的所有 5 个值?
  • 是的。但是我正在处理的原始数据集在每组中都会有更多的观察结果。我需要得到一个新的数据框,其中第一列将指示拆分间隔(此列的值无关紧要:它们可能只是 1、2、3、.. 表示 5 秒的顺序间隔)和第二个包含每个间隔中的观察次数。
  • 然后使用dfs={k.strftime('%Y-%m-%d %H:%M:%S'):v.assign(col=len(v.index)) for k,v in df.groupby(pd.Grouper(key='Date', freq='5S'))}
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-05-31
  • 2013-11-16
相关资源
最近更新 更多