특정 데이터 프레임에서 일련의 작업을 수행하고 싶습니다.
이 작업의 목표는 더 큰 데이터 프레임의 하위 집합을 나타내는 데이터 프레임을 만드는 것입니다.
내 원래의 데이터 프레임입니다. 단 1 CARD_NO이있는 경우, dataframe
유지 - 각 CARD_NO
를 들어
:팬더 데이터 프레임 사용자 지정 하위 집합
CARD_NO,CUSTOMER_ID,MODIFIED_DATE,STATUS,LOYALTY
1111111111111111,1111111,2013-09-09 02:59:09,1,0
2222222222222222,2222222,2013-09-08 14:22:11,0,0
3333333333333333,3333333,2013-01-01 22:22:22,1,0
4444444444444444,4444444,2014-11-26 04:22:22,0,0
5555555555555555,5555555,2014-10-10 10:10:10,1,0
6666666666666666,6666666,2014-04-03 14:30:00,1,0
7777777777777777,7777777,2014-03-03 00:02:01,0,0
논리는 다음과 같다 :
CARD_NO,CUSTOMER_ID,MODIFIED_DATE,STATUS,LOYALTY
1111111111111111,1111111,2013-09-09 02:59:09,1,0
2222222222222222,2222222,2013-09-08 14:22:11,0,0
3333333333333333,3333333,2013-01-01 11:11:11,1,0
3333333333333333,3333333,2013-01-01 22:22:22,1,0
4444444444444444,4444444,2014-01-01 11:11:11,1,0
4444444444444444,4444444,2014-11-26 04:22:22,0,0
5555555555555555,5555555,2014-10-10 10:10:10,1,0
5555555555555555,5555555,2014-10-10 10:10:10,0,0
6666666666666666,6666666,2014-04-01 14:30:00,1,0
6666666666666666,6666666,2014-04-02 14:30:00,0,0
6666666666666666,6666666,2014-04-03 14:30:00,1,0
7777777777777777,7777777,2014-03-03 00:01:00,0,0
7777777777777777,7777777,2014-03-03 00:02:00,1,0
7777777777777777,7777777,2014-03-03 00:02:01,0,0
내 목표는 다음 dataframe에 도착하는 것입니다 - 동일한 CARD_NO 중> 1이있는 경우 MODIFIED_DATE를 확인하십시오.
- MODIFIED_DATE가 다른 경우을 으로 가져 가십시오. 731,627,552,314,960,453,210 - 모든 MODIFIED_DATES가 동일한 경우,
1 내가 다른 모든 경우를 분리 할 수 있어요,하지만 난 dataframe의 맥락에서 전체 행을 유지 가리켜 드릴 수 없습니다 = 상태가 어느 행이 걸릴.
이 올바르게 올바르게 2 행과 동일한 CARD_NO MODIFIED_DATE하지만 서로 다른 상태를 갖는 경우 55,555,555, 가리키는 CARD_NOs 11111111 및 22222222.
def is_length_one(items):
return len(items) == 1
print input.groupby('CARD_NO').apply(lambda x: is_length_one(x['MODIFIED_DATE'].values))
CARD_NO
1111111111111111 True
2222222222222222 True
3333333333333333 False
4444444444444444 False
5555555555555555 False
6666666666666666 False
7777777777777777 False
포인트한다.
def all_same(items):
return all(x == items[0] for x in items) and len(items) >= 2
print input.groupby('CARD_NO', as_index=False, sort=False).apply(lambda x: all_same(x['MODIFIED_DATE'].values))
CARD_NO
1111111111111111 False
2222222222222222 False
3333333333333333 False
4444444444444444 False
5555555555555555 True
6666666666666666 False
7777777777777777 False
또한 최근 날짜를 반환하는 방법도 있습니다.
def most_recent(items):
return max(items)
print input.groupby('CARD_NO').apply(lambda x: most_recent(x['MODIFIED_DATE'].values))
CARD_NO
1111111111111111 2013-09-09 02:59:09
2222222222222222 2013-09-08 14:22:11
3333333333333333 2013-01-01 22:22:22
4444444444444444 2014-11-26 04:22:22
5555555555555555 2014-10-10 10:10:10
6666666666666666 2014-04-03 14:30:00
7777777777777777 2014-03-03 00:02:01
내 주요 문제는 제가 원하는 결과를 분리 할 수 있도록 내 원래 dataframe에 결과 부울 시리즈를 투영 할 수있는된다. 어떤 도움이라도 대단히 감사하겠습니다.
감사합니다.