根据此处的熊猫文档:Docs
和例子:
>>> index = pd.date_range('1/1/2000', periods=9, freq='T')
>>> series = pd.Series(range(9), index=index)
>>> series
2000-01-01 00:00:00 0
2000-01-01 00:01:00 1
2000-01-01 00:02:00 2
2000-01-01 00:03:00 3
2000-01-01 00:04:00 4
2000-01-01 00:05:00 5
2000-01-01 00:06:00 6
2000-01-01 00:07:00 7
2000-01-01 00:08:00 8
Freq: T, dtype: int64
重采样后:
>>> series.resample('3T', label='right', closed='right').sum()
2000-01-01 00:00:00 0
2000-01-01 00:03:00 6
2000-01-01 00:06:00 15
2000-01-01 00:09:00 15
我认为,重新采样后,垃圾箱应如下所示:
=========bin 01=========
2000-01-01 00:00:00 0
2000-01-01 00:01:00 1
2000-01-01 00:02:00 2
=========bin 02=========
2000-01-01 00:03:00 3
2000-01-01 00:04:00 4
2000-01-01 00:05:00 5
=========bin 03=========
2000-01-01 00:06:00 6
2000-01-01 00:07:00 7
2000-01-01 00:08:00 8
我在这一步上正确吗?
所以在.sum
我认为应该是这样的:
2000-01-01 00:02:00 3
2000-01-01 00:05:00 12
2000-01-01 00:08:00 21
我只是不明白结果如何:
2000-01-01 00:00:00 0
(因为label='right'
在这种情况下,2000年1月1日00:00:00不能是任何垃圾箱的任何右边缘)。
2000-01-01 00:09:00 15
(标签2000-01-01 00:09:00甚至在原始系列中也不存在。
简短的答案: 如果您使用closed='left'
,loffset='2T'
那么您将获得期望的结果:
series.resample('3T', label='left', closed='left', loffset='2T').sum()
2000-01-01 00:02:00 3
2000-01-01 00:05:00 12
2000-01-01 00:08:00 21
长答案:( 或者给定您使用的参数,为什么您得到的结果是正确的)从文档中可能不清楚,但是在这种设置下打开和关闭是关于严格不严格不平等(例如<
vs
<=
)的问题。
一个例子应该使这一点变得清楚。使用示例中的内部间隔,这与更改以下值的区别closed
:
closed='right' => ( 3:00, 6:00 ] or 3:00 < x <= 6:00
closed='left' => [ 3:00, 6:00 ) or 3:00 <= x < 6:00
您可以在类似此处的许多地方找到间隔符号的说明(括号和括号),例如:https
:
//en.wikipedia.org/wiki/Interval_(mathematics)
该label
参数仅控制显示左侧(3:00)还是右侧(6:00),但不会影响结果本身。
另请注意,您可以使用loffset
参数(应将其输入为时间增量)更改间隔的起点。
回到示例,在这里我们仅将标签从“ right”更改为“ left”:
series.resample('3T', label='right', closed='right').sum()
2000-01-01 00:00:00 0
2000-01-01 00:03:00 6
2000-01-01 00:06:00 15
2000-01-01 00:09:00 15
series.resample('3T', label='left', closed='right').sum()
1999-12-31 23:57:00 0
2000-01-01 00:00:00 6
2000-01-01 00:03:00 15
2000-01-01 00:06:00 15
如您所见,结果是相同的,只是索引标签改变了。大熊猫仅可以显示在左边或右边的标签,但如果它表现出 两个
,那么它看起来像这样(在下面,我用标准的索引符号,其中(
左侧手段打开和]
右侧被封闭):
( 1999-12-31 23:57:00, 2000-01-01 00:00:00 ] 0 # = 0
( 2000-01-01 00:00:00, 2000-01-01 00:03:00 ] 6 # = 1+2+3
( 2000-01-01 00:03:00, 2000-01-01 00:06:00 ] 15 # = 4+5+6
( 2000-01-01 00:06:00, 2000-01-01 00:09:00 ] 15 # = 7+8
请注意,第一个bin(23:57:00,00:00:00]不为空,只是它包含一行并且该行中的值为零。如果将“ sum”更改为“ count”这变得更加明显:
series.resample('3T', label='left', closed='right').count()
1999-12-31 23:57:00 1
2000-01-01 00:00:00 3
2000-01-01 00:03:00 3
2000-01-01 00:06:00 2
我有一个小熊猫DataFrame我想重新取样,我希望你能帮我:) 我不能给你看,因为它是保密的,但我可以给你描述一个更简单的版本。 它有4列: -日期(YYYY-MM-DD格式) -国家 -数量 -频率 下面是我想做的: 根据行的不同,频率为每年或每月如果恰好是每月,则无需执行任何操作。 但如果是每年一次,我想将其改为每月一次,并插入11个新行,以便在考虑的12行(现有行和11个新行)中,国家将保
我试图将x轴和y轴标签以及标题放在我通过熊猫创建的三面板直方图上,但似乎无法正确放置。我在标题和三个图中最后一个的x轴标签中得到的唯一结果。我想要一个总的标题,XLabel和YLabel。制作该图的代码如下。有什么建议吗?
问题内容: 给定下面的熊猫DataFrame: 我想对数据重新采样以每小时计数一次,同时按位置分组以生成如下所示的数据框: 我尝试了resample()和groupby()的各种组合,但是没有运气。我将如何处理? 问题答案: 在我的原始帖子中,我建议使用。如今,使用代替。语法在很大程度上是相同的,但现在已不支持。 此外,虽然只能按DatetimeIndex分组,但可以按日期时间 列进行分组,而您可
人们可以使用熊猫轻松地从数据框中创建子情节: 现在如何将x和y标签添加到生成的绘图中?这里是一个单一的情节解释。因此,如果我想向特定子批次添加标签,我可以: 这就产生了: 如何添加标签,使它们居中,而不仅仅是指一行/列?
我有如下的XML文件。 我想解析crewMember标签,并从中获取id、姓氏、姓氏以及flightQualification中的iSaventured标签,所有这些都放在一个Pandas数据框中,如下所示: 我知道这将涉及一个for循环来检索firstName和lastName值,但在提取我需要的所有值时遇到困难。有没有快速的方法来做到这一点?
我有一个熊猫时期对象: 从书(Python for Data Analysis)中,的意思是 季度日期固定在每个月的最后一个日历日,在指定月份(1月、2月、3月、4月、5月、6月、7月、8月、9月、10月、11月或12月)结束的年份 这到底是什么意思? 从我的常识来看,包括八月、九月和十月。那么在这里如何处理十二月()呢? 任何人都可以简明扼要地解释变量吗?提前感谢您。:)