2017-09-10 3 views
1

다중 색인 데이터 프레임이 있습니다. 09:15:00으로 끝나는 인덱스가있는 행을 삭제하려고합니다. 09:15:00특정 인덱스의 행을 삭제하는 방법은 무엇입니까?

로 끝나는 내가 여러 인덱스가

2017-09-07 09:15:00 VEDL 320.20 320.20 320.20 320.20 311 

주 : 즉 https://gist.github.com/RJUNS/f4ad32d9b6da8cf4bedde0046a26f368

       CLOSE HIGH LOW  OPEN VOLUME 
2017-09-07 09:15:00 VEDL 320.20 320.20 320.20 320.20 311 
2017-09-07 09:30:00 ACC  1808.05 1812.95 1798.75 1806.80 21611 
         VEDL 319.85 320.60 319.25 320.00 651516 
2017-09-07 09:45:00 ACC  1805.00 1812.00 1802.10 1810.45 12679 
         VEDL 319.35 320.80 318.85 319.90 417515 
2017-09-07 10:00:00 ACC  1802.00 1807.15 1800.85 1805.00 9915 
         VEDL 320.15 320.30 319.20 319.50 259587 

내가 행을 삭제하려면 :

는 여기 재현 코드를

아무도 해결책을 제공해 주십니까?

답변

2

사용 boolean indexing은 선택 첫 번째 수준 get_level_valuestime 비교 :

df1 = df[df.index.get_level_values(0).time != datetime.time(9, 15)] 
print (df1) 

... 
        VEDL 332.20 332.75 332.00 332.55 154978 
2017-09-08 08:30:00 INFY 890.00 890.00 889.70 889.70 64289 
        VEDL 331.50 332.20 331.40 332.20 393830 
2017-09-08 08:45:00 INFY 889.85 890.00 889.60 890.00 142584 
        VEDL 331.70 332.00 331.20 331.40 342857 
2017-09-08 09:00:00 INFY 889.65 890.10 889.25 889.85 234244 
        VEDL 331.85 332.00 331.45 331.65 458025 
2017-09-08 09:30:00 INFY 886.45 889.85 885.90 889.60 365388 
        VEDL 331.45 332.40 331.20 331.70 912145 
... 

, 다음 MultiIndex 값을 얻을 drop에 의해 제거 된 행의 위치에 대한 DatetimeIndex.indexer_at_time 또 다른 솔루션 :

df1 = df.drop(df.index[df.index.get_level_values(0).indexer_at_time('9:15:00')]) 

솔루션 문자열이 comapre 인 DatetimeIndex.strftime :

df1 = df[df.index.get_level_values(0).strftime('%H:%M') != '09:15'] 
+1

그 덕분에 다시 한 번 감사드립니다. – BlueQuant

+0

첫 번째 또는 두 번째 해결책은 무엇입니까? – BlueQuant

+0

정말 어려운 질문입니다. 시험해 봅니다. – jezrael

관련 문제