簡體   English   中英

基於時間戳小時刪除 DataFrame 中的行

[英]Droping rows in DataFrame based on Timestamp Hour

我正在嘗試刪除具有日期時間索引列的 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)也無濟於事。

謝謝

您可以制作一個掩碼指定要保留的行,而不是循環遍歷行(這會很慢),然后讓pandas給您一個(更快的)答案:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM