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