1
인덱스 당 하나의 행만 유지하는 멀티 인덱스 데이터 프레임을 필터링하는 방법을 생각할 수 없습니다. PD로 NP 수입 팬더와 같은 수입 임의 수입 NumPy와각 멀티 인덱스 팬더 데이터 프레임에 대해 최소값 가져 오기
A = np.array(['ID1', 'ID1', 'ID2', 'ID3', 'ID3', 'ID3', 'ID4', 'ID4'])
B = np.array([1, 2, 2, 5, 3, 7, 12, 9])
C = np.array([1,2,3,4,5,6,7,8])
D = list('abcdefgh')
df1 = pd.DataFrame(zip(A, B, C, D), columns=['ID', 'trial', 'C', 'D'])
df1.set_index(['ID', 'trial'], inplace=True)
a = np.array(['ID2', 'ID3', 'ID4'])
b = np.array([2,2,11])
df2 = pd.DataFrame(zip(a,b), columns = ['sub', 'attempt'])
DF1 :
C D
ID trial
ID1 1 1 a
2 2 b
ID2 2 3 c
ID3 5 4 d
3 5 e
7 6 f
ID4 12 7 g
9 8 h
DF2 : 여기
내 데이터이다sub attempt
0 ID2 2
1 ID3 2
2 ID4 11
그리고 나는 것 df1에서 유지하는 것처럼 데이터 th 만 '시도'의 상태로 DF2 일치에 df1.trial이 df2.attempt하기가 가장 가까운 값을 가진 행을 유지해야합니다
C D
ID trial
ID2 2 3 c
ID3 3 5 e
ID4 12 7 g
내가 많은과 (정말 더러운 방법을 발견 반복 "에 대한" ...),하지만 더 아름다운 뭔가가있는 것처럼 느껴집니다.
내가하고 싶은 또 다른 것은, DF1 각 multiindex의 첫 번째 행을 유지하는 것입니다 : 그러나 여기
C D
ID trial
ID1 1 1 a
ID2 2 3 c
ID3 5 4 d
ID4 12 7 g
, 난 단지 다른 하나를 만들어, 더러운 코드를 얻을.
도움 주셔서 감사합니다.
답장을 보내 주셔서 감사합니다. 첫 번째 방향을 알려줍니다. 그러나 내 경우에는 'C'또는 'D'열이 반드시 주문 된 것은 아니므로 이것이 첫 번째 선을 원하는 이유입니다. 'C'와 'D'는 정수 나 문자열이 아니라 객체 일 수 있습니다. – POINTEAG
업데이트 된 답변 @POINTEAG – piRSquared