Мне нужно очистить некоторые данные в Pandas DataFrame и бороться с этим.
Пример данных:
Date | ID | Name | Address
-----------------------------------------------------------------------------------------------
1-4-1987 | 124578 | T.Hilpert | 518 Hessel Plaza Lake Lonzo, AZ 11863
23-6-1990 | 947383 | Birdie Reynolds | 964 Weissnat Green Suite 568 Rennerbury
12-5-1960 | 746732 | Earline Schulist | 57367 Alfredo Vista East Bertaburgh
9-9-2010 | 947383 | Birdie Reynolds | 964 Weissnat Green Suite 568 Rennerbury, WV 16241-5205
27-12-2017 | 124578 | Theresia Hilpert | 518 Hessel Plaza Lake Lonzo
Я хочу сделать это.Сгруппировать по идентификатору, получить имя с самой последней даты и получить самую длинную адресную строку.Используйте их для всех вхождений идентификатора (в двух новых столбцах: Name_new
и Address_New
).Пожалуйста, найдите желаемый образец ниже:
Date | ID | Name | Address | Name_New | Address_New
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------
27-12-2017 | 124578 | Theresia Hilpert | 518 Hessel Plaza Lake Lonzo | Theresia Hilpert | 518 Hessel Plaza Lake Lonzo, AZ 11863
1-4-1987 | 124578 | T. Hilpert | 518 Hessel Plaza Lake Lonzo, AZ 11863 | Theresia Hilpert | 518 Hessel Plaza Lake Lonzo, AZ 11863
23-6-1990 | 947383 | Birdie Reynolds | 964 Weissnat Green Suite 568 Rennerbury | Birdie Reynolds | 964 Weissnat Green Suite 568 Rennerbury, WV 16241-5205
9-9-2010 | 947383 | Birdie Reynolds | 964 Weissnat Green Suite 568 Rennerbury, WV 16241-5205 | Birdie Reynolds | 964 Weissnat Green Suite 568 Rennerbury, WV 16241-5205
12-5-1960 | 746732 | Earline Schulist | 57367 Alfredo Vista East Bertaburgh | Earline Schulist | 57367 Alfredo Vista East Bertaburgh
Я пробовал это, но не могу объединить его, чтобы получить желаемый результат.
def f1(s):
return max(s, key=len)
df_new = df['New_Address'] = df.groupby('ID').agg({'Address': f1})
df_new = df[df.groupby('ID').Date.transform('max') == df['Date']]
Ваша помощь особенно ценится.