根据时间戳小时在DataFrame中删除行

时间:2019-12-11 18:58:55

标签: python pandas timestamp

我正在尝试在具有日期时间索引列的DataFrame中删除行。使用<。

将str与int进行比较时出现错误

我正在运行的代码如下。

def clean(df):
    for i in range(len(df)):
        hour = pd.Timestamp(df.index[i]).hour
        minute = pd.Timestamp(df.index[i]).minute
        if hour < 8 and minute < 45:
            df.drop(axis=1, index=i, inplace=True)

这将导致错误:TypeError: '<' not supported between instances of 'str' and 'int'

如果我写一行:type(pd.Timestamp(df.index[i]).hour)它返回<class 'int'>

我可以像hour += 1那样进行数学运算,但是当比较小时或分钟时,if语句返回错误。将代码更改为hour = int(pd.Timestamp(df.index[i]).hour)也无济于事。

谢谢

1 个答案:

答案 0 :(得分:1)

您可以制作一个掩码,指定要保留的行,而不用遍历行(这会很慢),而让pandas为您提供(更快)的答案:

df = df[(df.index.hour >=8) | (df.index.minute >= 45)]