簡體   English   中英

根據該組中列的第一行值更改分組 dataframe 中的值

[英]Changing values in grouped dataframe based on first row value of the column in that group

我正在使用下面的代碼來安排一些數據。 它按'ID''L'分組,如果它是True ,我已經使用條件在MT列中打印 True 。 我想要的是,當該組的第一行為真時,該組中的每一行都應打印為真,而不管條件如何(例如在下面的 output 中,MT 列中的第五行也應該顯示真,因為第一行評估為真)。

import pandas as pd
df=pd.DataFrame({'TS' : [20,25,30,35,45,50,55,58,65,75,60,62,72,77],"ID" : [22,22,23,23,23,23,23,23,23,23,24,24,24,24],"L" : [1,2,1,2,2,2,1,1,2,2,1,1,2,2]})
df2=(df.assign(TS=df['TS'].abs())
    .groupby(['ID','L'])['TS'].agg([('Min' , 'min'), ('Max', 'max')])
    .add_prefix('TS'))
df3=(df2.assign(WT=df2['TSMax']-df2['TSMin'])
    .assign(MT=df2['TSMax'].gt(df2.groupby('ID')['TSMin'].shift(-1))))
df3

Output:

在此處輸入圖像描述

您可以使用groupby ,在 MT 列上建立索引,然后使用transform檢查值是否為 True 進行轉換。

df3['MT'] = df3.groupby('ID')['MT'].transform(lambda x: x.values[0] if x.values[0] else x)

Output:

在此處輸入圖像描述

暫無
暫無

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

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