2013-05-10 4 views
1

크기가 큰 데이터 프레임이 있습니다 : 100000 행 * 10000 열Python pandas dataframe : 목록을 사용하여 열을 필터링 하시겠습니까?

이제이 데이터 프레임의 열 레이블과 정확히 일치하지 않지만 일치하는 레이블 목록 (이 list1을 호출)이 제공됩니다. 이 라벨의 일부. 예를 들어, 데이터 프레임의 레이블은 "string1, D111"이고 list1의 레이블은 "D111"처럼 보일 수 있습니다.

이제 기본적으로 list1을 사용하여 이러한 모든 해당 열을 찾아서이 모든 열을 합산하려고합니다. 가장 효율적인 방법은 무엇입니까?

Dataframe: 
     string1,D111  string2,D222   string3,D333 ...... stringn,Dnnn 
1   ..     ..      ..      .. 
2 
3 
4 
5 
6 
... 


My list1: D111, D333,...Dxxx 

답변

8
In [28]: df = DataFrame(randn(10,10),columns=[ 'c_%s' % i for i in range(3)] + ['d_%s' % i for i in range(3) ] + ['e_%s' % i for i in range(4)]) 

In [3]: df.filter(regex='d_|e_') 
Out[3]: 
     d_0  d_1  d_2  e_0  e_1  e_2  e_3 
0 -0.022661 -0.504317 0.279227 0.286951 -0.126999 -1.658422 1.577863 
1 0.501654 0.145550 -0.864171 -0.374261 -0.399360 1.217679 1.357648 
2 -0.608580 1.138143 1.228663 0.427360 0.256808 0.105568 -0.037422 
3 -0.993896 -0.581638 -0.937488 0.038593 -2.012554 -0.182407 0.689899 
4 0.424005 -0.913518 0.405155 -1.111424 -0.180506 1.211730 0.118168 
5 0.701127 0.644692 -0.188302 -0.561400 0.748692 -0.585822 1.578240 
6 0.475958 -0.901369 -0.734969 1.090093 1.297208 1.140128 0.173941 
7 -0.679514 -0.790529 -2.057733 0.420175 1.766671 -0.797129 -0.825583 
8 -0.918645 0.916237 0.992001 -0.440573 -1.875960 -1.223502 0.084821 
9 1.096687 -1.414057 -0.268211 0.253461 -0.175931 1.481261 -0.200600 
+0

감사합니다! 그건 완전히 작동! – user511792

관련 문제