无法将类型“Timestamp”与类型“int”进行比较

2024-04-19 17:12:13 发布

您现在位置:Python中文网/ 问答频道 /正文

运行以下代码时:

for row,hit in hits.iterrows():
    forwardRows = data[data.index.values > row];

我得到这个错误:

TypeError: Cannot compare type 'Timestamp' with type 'int'

如果我看看这里比较的是什么,我有这些变量:

type(row)
pandas.tslib.Timestamp

row
Timestamp('2015-09-01 09:30:00')

正在与:

type(data.index.values[0])
numpy.datetime64

data.index.values[0]
numpy.datetime64('2015-09-01T10:30:00.000000000+0100')

我想知道这是一个很容易解决的问题,还是我应该上传我的数据子集?谢谢


Tags: 代码innumpyfordataindextypetimestamp
2条回答

当使用values时,您将其放入numpy世界。相反,试着

for row,hit in hits.iterrows():
    forwardRows = data[data.index > row];

虽然这不是你问题的直接答案,但我感觉这就是你要找的:pandas.DataFrame.truncate

您可以使用它如下:

for row, hit in hits.iterrows():
    forwardRows = data.truncate(before=row)

下面是一个小玩具示例,说明您通常如何使用它:

import pandas as pd

# let's create some data to play with
df = pd.DataFrame(
    index=pd.date_range(start='2016-01-01', end='2016-06-01', freq='M'),
    columns=['x'],
    data=np.random.random(5)
)

# example: truncate rows before Mar 1
df.truncate(before='2016-03-01')

# example: truncate rows after Mar 1
df.truncate(after='2016-03-01')

相关问题 更多 >