如何根據條件刪除一系列行?

TSRAI

我有以下數據框:

    id outcome
0    3      no
1    3      no
2    3      no
3    3     yes
4    3      no
5    5      no
6    5      no
7    5     yes
8    5      no
9    5     yes
10   6      no
11   6      no
12   6     yes
13   6      no
14   6      no

我想刪除noa 之前序列開頭結果yes,並保留所有其他no結果,因此輸出數據幀如下所示:

    id outcome
3    3     yes
4    3      no
7    5     yes
8    5      no
9    5     yes
12   6     yes
13   6      no
14   6      no

目前我已經嘗試過這個:

df = pd.DataFrame(data={
       'id': [3, 3, 3, 3, 3, 5, 5, 5, 5, 6, 6, 6, 6, 6], 
       'outcome': ['no', 'no', 'no', 'yes', 'no', 'no', 'no', 'yes', 'yes', 'no', 'no', 'yes', 'no', 'no']
     })


df = df[df.groupby('id').outcome.transform(lambda x: x.ne('no'))]

但是,這只是刪除了所有no結果。

我知道然後我需要獲取這些行的索引並將它們從數據框中刪除。有什麼建議?

夏道

使用groupbywithcumsum在開頭用 0 標記所有“否”:

df['no_group'] = df.groupby('id')['outcome'].apply(lambda x: x.eq('yes').cumsum())

現在,要刪除的“否”數是:

num_no_to_remove = (df['no_group'] == 0).sum()

並且可以通過過濾獲得想要的數據幀:

df.loc[df['no_group'] > 0].drop(columns=['no_group'])

結果:

    id  outcome
3    3      yes
4    3       no
7    5      yes
8    5       no
9    5      yes
12   6      yes
13   6       no
14   6       no

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

熊貓根據 groupby 的條件刪除行

熊貓如何根據不同的列和不同的條件刪除行

如何刪除 python ndarray 矩陣中的一系列行?

根據條件刪除列表組件

根據特定條件刪除數據幀的特定行

Python - 在 groupby 之後根據條件從 pandas.core.series.Series 中刪除一行

如何根據列條件的第一次出現執行 groupby 並刪除重複項?

Pandas:根據 DataFrame 中的條件刪除字符

根據條件熊貓刪除 DataFrame 中的重複行

根據條件刪除連續的重複行

在 R 中:根據多個條件刪除行/觀察

如何從一系列列表中刪除同一列

如何根據 textInput 和某些條件在 Shiny App 中呈現和刪除 UI?

根據條件從 Marklogic 暫存中刪除文檔

根據條件熊貓刪除重複項

根據條件從字典列表中刪除嵌套字典?

WPF:根據條件刪除上下文菜單項

根據條目的類型刪除數據框中的行

根據一行值刪除多行

如何從滿足多個條件的數據框中刪除特定行(python pandas)?

如何根據序列中的下一個值刪除行?(熊貓)

如何根據閾值刪除行,但由另一列組織?

如何使用Spark处理一系列HBase行?

如何在Excel中访问一系列行?

vim中的这一系列击键如何删除除带编号的行以外的所有内容?

根據行日期刪除多行

Python,Pandas:刪除數據框列並將行與條件組合

如何檢查表的長度並用它創建一個if條件並刪除一行?

如何测试一系列互动?