簡體   English   中英

如何在按天分組的數據框中刪除某些日期?

[英]How can you drop certain dates in a data frame grouped by day?

我正在研究按日期對數據框進行分組的代碼:

gk = df_HR.groupby(['date'])

我現在得到一個數據框,其中每個日期的第一行看起來像這樣:

2022-05-23  22:18   60  2022-05-23 22:18:00 1653344280  1.000000
2022-05-24  00:00   54  2022-05-24 00:00:00 1653350400  0.900000

....

我想刪除日期“2022-05-24”的所有數據作為示例。 但是,當我使用 .drop() 函數時,我收到錯誤“DataFrameGroupBy”對象沒有屬性“drop”。 我怎樣才能從這個日期刪除所有數據?

根據我收集的信息,目標是按日期對數據框進行分組,並在某一天刪除帶有日期的數據框

import pandas as pd

# ...

gk = df_HR.groupby(['date'])
good_dfs = []
for date, sub_df in gk:
  if DATE_TO_DROP not in date:
    good_dfs.append(sub_df)

final_df = pd.concat(good_dfs)

或者,您可以只刪除“日期”包含該字符串的行

df_HR.drop(df_HR[ DATE_TO_REMOVE in df_HR.date].index, inplace=True)

以上用於刪除單個日期。 如果您有多個日期,這里又是這兩個選項

選項1:

dates_to_drop = [] 
gk = df_HR.groupby(['date'])
good_dfs = []
for date, sub_df in gk:
  for bad_date in dates_to_drop:
    if bad_date in date:
      good_dfs.append(sub_df)

final_df = pd.concat(good_dfs)


選項2:

dates_to_drop = [] 
for bad_date in dates_to_drop:
  df_HR.drop(df_HR[ bad_date in df_HR.date ].index, inplace=True)

我們必須循環的原因是因為 DF 中的日期不僅僅包含您要查找的字符串。 在 python 中檢查子字符串是否存在涉及使用 'in' 運算符。 但是我們無法檢查字符串列表是否在字符串中,因此我們遍歷錯誤日期,刪除每個錯誤日期的所有行。

按結果將您的組保存在 Dataframe-df 中,然后使用下面的代碼選擇要刪除的日期列表。

date_list_filter = [datetime(2009, 5, 2),
             datetime(2010, 8, 22)]

df.drop(date_list, inplace=True)

希望這可以幫助 !

請參閱下面的代碼以進一步解釋

my_date=[datetime(2009, 5, 2),
    datetime(2010, 8, 22),
     datetime(2022,8,22),
     datetime(2009,5,2),
     datetime(2010,8,22)       
    ]

df=pd.DataFrame(my_date)
df.columns=['Date']
df1=df.groupby('Date').mean()
df1 # now see below data of dataframe df1

在此處輸入圖像描述

df1.drop('2009-05-02',inplace=True) 
# given date will be dropped-see screenshot  
df1

在此處輸入圖像描述

暫無
暫無

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

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