![](/img/trans.png)
[英]Apply function to grouped data frame in Dask: How do you specify the grouped Dataframe as argument in the function?
[英]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.