【问题标题】:Split dates to create various time series拆分日期以创建各种时间序列
【发布时间】:2020-05-04 19:21:38
【问题描述】:

我有一些这样的日期:

2015-02-02 14:19:00

我有 20000 条记录和 14 个不同的日子,我想将数据集分成 14 个不同的部分,以获得 14 个不同的时间序列,每天一个。

我想为每一天创建一个变量,该变量仅包含所考虑日期的记录。

【问题讨论】:

  • 您能否为您的问题添加更多详细信息,不清楚您想要实现什么。谢谢
  • 我想将数据集分成不同的日子进行比较
  • 你能解释更多吗?请举一个“14个不同部分”的例子。我的意思是,我只能将一个日期分成 6 个部分。
  • 您可能应该从您的记录中添加一些示例、您尝试过的任何代码以及您发现的错误。请参考这些指南[如何提问?] (stackoverflow.com/help/how-to-ask)

标签: python pandas split time-series


【解决方案1】:

IIUC

# sample data
df = pd.DataFrame(pd.date_range('2020-01-01', '2020-01-14', freq='5T'), columns=['date'])
# list comprehension to spit groups into separate frames
dfs = [g for _,g in df.groupby(df['date'].dt.date)]

或者如果您希望关键是日期,您可以使用字典理解

dfs = {idx:df for idx,df in df.groupby(df['date'].dt.date)}
# below is how you call each frame by the date
dfs[datetime.date(2020, 1, 1)]

具有多个列的新示例

df = pd.DataFrame(np.transpose([pd.date_range('2020-01-01', '2020-01-14', freq='5T'),
                                np.random.randint(1,10,3745)]), columns=['date', 'col'])
dfs = [g for _,g in df.groupby(df['date'].dt.date)]
print(dfs[0])

                   date col
0   2020-01-01 00:00:00   3
1   2020-01-01 00:05:00   3
2   2020-01-01 00:10:00   6
3   2020-01-01 00:15:00   6
4   2020-01-01 00:20:00   3

【讨论】:

  • 我尝试了您的第一个解决方案,它有效,但我如何才能让记录的数量与我选择的当天的记录大小相对应?而不是用“频率”或“周期”预定义的?此外“dfs”它只返回日期,而不是我想要日期和二氧化碳
  • 对于特定日期的所有记录,我想要当天所有记录的 CO2 值。
  • @Boninissimo 你是什么意思?所有列都在列表理解中返回。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-02
  • 1970-01-01
  • 2019-02-20
  • 2013-10-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多