簡體   English   中英

Pandas groupby 轉換以獲取非空日期值

[英]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.

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