簡體   English   中英

在特定分鍾刪除行

[英]Dropping rows at specific minutes

我試圖在特定分鍾(05,10,20)刪除行我有日期時間作為索引

df5['Year'] = df5.index.year
df5['Month'] = df5.index.month
df5['Day']= df5.index.day
df5['Day_of_Week']= df5.index.day_name()
df5['hour']= df5.index.strftime('%H')
df5['Min']= df5.index.strftime('%M')
df5

在此處輸入圖像描述

然后我跑到下面

def clean(df5):
for i in range(len(df5)):
    hour = pd.Timestamp(df5.index[i]).hour
    minute = pd.Timestamp(df5.index[i]).minute
    if df5 = df5[(df5.index.minute ==5) | (df5.index.minute == 10)| (df5.index.minute == 20)]
        df.drop(axis=1, index=i, inplace=True)

它返回無效的語法錯誤。

這里循環不是必須的, 也不推薦

通過~boolean indexing中過濾,將DatetimeIndex.minuteIndex.isin和反向掩碼一起使用:

df5 = df5[~df5.index.minute.isin([5, 10, 20])]

為了重用列df5['Min']使用字符串值:

df5 = df5[~df5['Min'].isin(['05', '10', '20'])]

全部一起:

def clean(df5):
    return df5[~df5.index.minute.isin([5, 10, 20])]

您可以使用 boolean 索引來完成它,假設索引已經被解析為日期時間。

df5 = df5[~((df5.index.minute == 5) | (df5.index.minute == 10) | (df5.index.minute == 20))]

或者相同答案的反面:

df5 = df5[(df5.index.minute != 5) | (df5.index.minute != 10) | (df5.index.minute != 20)]

一般來說,在IF語句中組合邏輯OR的正確語法如下:

    today = 'Saturday'
    
    if today=='Sunday' OR today=='Saturday':
        print('Today is off. Rest at home')

在你的情況下,你可能應該使用這樣的東西:

if df5 == df5[(df5.index.minute ==5)] OR df5[(df5.index.minute ==10)]
        ......

最后說明:

你在使用===時犯了一些錯誤

在 Python(以及許多其他編程語言)中,單個等號=用於為變量賦值,而兩個連續的等號==用於檢查 2 個表達式是否給出相同的值。

= is an assignment operator

== is an equality operator

暫無
暫無

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

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