簡體   English   中英

熊貓-根據Datetime列值刪除DataFrame行

[英]Pandas - Dropping DataFrame rows based on Datetime column value

我目前正在編寫一個腳本,希望在幾年中根據Datetime值刪除熊貓數據框的某些行(我希望刪除datetime在2月至5月之間的行。因此,我首先嘗試了以下代碼:

game_df['Date'] = game_df[(game_df['Date'].dt.month < 2) & (game_df['Date'].dt.month > 5)]

在這段時間內,它在“日期”列中為我提供了具有NaN值的相同數據框。 因此,我嘗試了以下代碼以刪除相應的行:

game_df['Date'] = game_df[(game_df['Date'].dt.month < 2) & (game_df['Date'].dt.month > 5)].drop(game_df.columns)

但它引發的錯誤,如:標簽[U“ 日期 ‘U’other_column1‘U’other_column2‘U’other_column3‘U’other_column4”]不包含在軸線

有誰能解決這個問題?

我認為您可以使用Timestamp的列表嘗試執行以下操作:

如果要排除具有特定日期的行:

game_df[~game_df['Date'].isin([pd.Timestamp('20150210'), pd.Timestamp('20150301')])]

~not運營商之初game_df如果你不熟悉它。 因此,這是要返回時間戳記不是提到的兩個日期的數據幀。

編輯:如果要排除特定日期之間的行范圍

game_df[~game_df['Date'].isin(pd.date_range(start='20150210', end='20150301'))]

實際上,我已經使用以下代碼找到了想要的東西:

game_df = game_df[(game_df['Date'].dt.month != 2) & (game_df['Date'].dt.month != 3) & (game_df['Date'].dt.month != 4)\
                      & (game_df['Date'].dt.month != 5)]

這很丑陋,我確實認為可以用一種更有效的方法來完成它,但是當排除日期時間值位於某個時間范圍內的行時,它可以工作。

我發現查詢比刪除更有用。 但是,您當然需要更改參數以包括要保留的部分數據。

df.query("Date.dt.month < 2 & Date.dt.month > 5", inplace=True)

如果您想使用確切的日期:

df.query("Date <= '2017-01-31' & Date >= '2017-05-01' ", inplace=True)

暫無
暫無

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

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