이와 같은 DataFrame이 있습니다.
id city province status date
---- -------- ---------- -------- ----------
1 Cainta Rizal failed 22/07/2020
1 nan nan success 22/07/2020
1 nan nan success 22/07/2020
2 Pasig Manila success 22/07/2020
2 nan nan failed 22/07/2020
2 nan nan failed 22/07/2020
3 Marikina Manila failed 22/07/2020
3 nan nan success 22/07/2020
3 nan nan success 22/07/2020
내가 원하는 것은 위의 DataFrame을 다음으로 변환하는 것입니다.
id city province status date
---- -------- ---------- -------- ----------
1 Cainta Rizal success 22/07/2020
2 Pasig Manila success 22/07/2020
3 Marikina Manila success 22/07/2020
따라서 기준은 상태가 '성공'인 모든 ID에 대해시 및 도의 null이 아닌 값을 가져 오는 것입니다. 이 코드를 사용하여 SQL에서이 작업을 수행 할 수 있으며 pandas에서이를 복제하고 싶습니다.
SELECT ID,
MAX(CITY) AS CITY,
MAX(PROVINCE) AS PROVINCE,
'SUCCESS' AS STATUS,
MAX(CASE WHEN STATUS = 'SUCCESS' THEN DATE END) AS "DATE",
FROM TABLE
GROUP BY ID
내 예가 명확하기를 바랍니다. 정말 고맙습니다!
편집 : 백만 행 DF에 이것을 할 것입니다.