pandas IntervalIndex中的错误'left side of interval must be〈= right side'

idv4meu8  于 2023-04-19  发布在  其他
关注(0)|答案(1)|浏览(190)

我有一个dataframe,看起来像这样:
| 卷码|起始日期|至今|卷_1|卷_2|卷_3|
| --------------|--------------|--------------|--------------|--------------|--------------|
| 0|2019 -01- 22 00:00:00|2019 -01- 22 00:00:00|八|四|七|
| 1|2022-01-01 01:00:00|2019 -01- 12 01:01:59|0|六|五|
| 1|2022-01-01 02:00:00|2019 -01- 12 02:19:59|10个|九|十四岁|
| 二|2022-01-01 03:00:00|2019 -01-01 03:59:59|0|十一|三|
| 三|2022-01-01 04:00:00|2019 -01- 22 01:01:01|十三|二|1|
这个dataframe是一个透视表,它计算每个Volume代码(Volume_x)在不同时间间隔内的发生次数。我们有另一个表,它有datetime,我需要知道在前一个小时内辅助表的发生次数。
例如,对于Volume_2中的日期时间2022-01-01 03:16:43,我们将减去一个小时,因此02:16:43,并在主 Dataframe 中查找它,这将在该时间范围内给予我们9次。我做了以下操作:

s = pd.IntervalIndex.from_arrays(df['from_date'] - pd.Timedelta(1, 'hour'),
                                 df['to_date'] - pd.Timedelta(1, 'hour'))

它对一个示例有效,但现在我不知道为什么它会引发以下错误:

ValueError: left side of interval must be <= right side

正如你在表中看到的,from_date总是〈= than to_date,所以我不明白为什么它会失败。

idfiyjo8

idfiyjo81#

您可以在boolean indexing中测试更大值的真实的数据:

s1 = df['from_date'] - pd.Timedelta(1, 'hour')
s2 = df['to_date'] - pd.Timedelta(1, 'hour')

print (df[s1.gt(s2)])

工作方式相同:

print (df[df['from_date'].gt(df['to_date'])])

相关问题