【问题标题】:How to spilt pandas series based on list of dates如何根据日期列表拆分熊猫系列
【发布时间】:2020-06-09 12:01:04
【问题描述】:

我有一个带有日期时间索引的熊猫系列:

2020-06-09 10:20:00     1
2020-06-09 10:25:00     2
2020-06-09 10:30:00     3
2020-06-09 10:35:00     4
2020-06-09 10:40:00     5
2020-06-09 10:45:00     6
2020-06-09 10:50:00     7
2020-06-09 10:55:00     8
2020-06-09 11:00:00     9
2020-06-09 11:05:00    10
2020-06-09 11:10:00    11
2020-06-09 11:15:00    12
2020-06-09 11:20:00    13
2020-06-09 11:25:00    14
2020-06-09 11:30:00    15
2020-06-09 11:35:00    16
2020-06-09 11:40:00    17

以及带有日期范围的数据框:

    start                   end
0   2020-06-09 10:21:00     2020-06-09 10:53:00
1   2020-06-09 10:42:00     2020-06-09 10:58:00

我想获取所有日期范围的值的集合:

[
 [2,3,4,5,6,7],
 [6,7,8]
]

有没有办法比使用这样的日期迭代数据框更快:

for x in df.iterrows():
  series[(series.index > x.start) & (series.index < x.end)]

【问题讨论】:

    标签: python pandas datetime


    【解决方案1】:

    如果使用Series.loc:

    L = [series.loc[s:e].tolist()  for s, e in df[['start','end']].to_numpy()]
    

    它的工作原理与 &gt;=&lt;= 比较:

    L = [series[(series.index >= s) & (series.index <= e)].tolist() 
                                      for s, e in df[['start','end']].to_numpy()]
    

    但如果需要比较高和低则需要:

    L = [series[(series.index > s) & (series.index < e)].tolist() 
                                      for s, e in df[['start','end']].to_numpy()]
    

    【讨论】:

      猜你喜欢
      • 2021-09-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-30
      • 2016-11-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多