[英]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.minute
與Index.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.