![](/img/trans.png)
[英]Pandas Groupby with idxmax and transform to get the value of the largest index of each group
[英]Pandas groupby transform to get not null date value
我有一個這樣構造的數據框:
df = pd.DataFrame({'id': [1,2,3,4,1,2,3,4],
'birthdate': ['01-01-01','02-02-02','03-03-03','04-04-04',
'','02-02-02','03-04-04','04-03-04']})
df['birthdate'] = pd.to_datetime(df['birthdate'])
我想做一個 groupby 來使用 pandas .transform
更改原始數據
條件是我想為每個id
第一個非空行的birthdate
值
我知道如果沒有其他選項可用於消除非空條目,我可以做max
,但如果存在不一致,我不一定想要最大日期,只需要數據幀中第一個出現的日期。
像這樣:
df['birthdate'] = df.groupby('id')['birthdate'].transform(max)
這是使用max
輸出的樣子:
id birthdate
0 1 2001-01-01
1 2 2002-02-02
2 3 2003-03-03
3 4 2004-04-04
4 1 2001-01-01
5 2 2002-02-02
6 3 2004-03-04
7 4 2004-04-04
這就是我真正想要的樣子:
id birthdate
0 1 2001-01-01
1 2 2002-02-02
2 3 2003-03-03
3 4 2004-04-04
4 1 2001-01-01
5 2 2002-02-02
6 3 2003-03-03
7 4 2004-04-04
我很確定我必須創建一個客戶lambda
來放入.transform
但我不確定要使用什么條件。
您可以嘗試以下操作。 您的數據框定義和建議的輸出包含不同的日期,所以我假設您的數據框定義是正確的
df['birthdate'] = df.groupby('id').transform('first')
哪個輸出。
id birthdate
0 1 2001-01-01
1 2 2002-02-02
2 3 2003-03-03
3 4 2004-04-04
4 1 2001-01-01
5 2 2002-02-02
6 3 2003-03-03
7 4 2004-04-04
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.