2016-11-18 6 views
2

팬텀 데이터 프레임에 50 개의 컬럼이 있고 30 개의 컬럼을 선택하고 싶습니다.팬더 데이터 프레임을 서브 셋트하는 방법

df = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l",............, "z"] 

내가 어떻게

에 알려 주시기 바랍니다 "Z"까지 "H"에서 "A"와 "C"를 선택한 다음 모든 열을 선택하고 싶습니다 : 의 우리는 다음과 같은 dataframe 있다고 가정 해 봅시다 이 데이터 프레임을 이름 또는 색인으로 부분 집합하십시오.

나는처럼 보이게 결과 dataframe을하고 싶은 다음

df = ["a", "c", "h", "i", "j", "k", "l",............, "z"] 

답변

1

그런 다음, 열 concanecate 위치에 대한 numpy.r_을 사용하여 선택하는 iloc를 사용할 수 있습니다

print (df.iloc[:, np.r_[0,2,7: len(df.columns)]]) 

샘플 :

df = pd.DataFrame({'a':[1,2,3], 
        'b':[4,5,6], 
        'c':[7,8,9], 
        'd':[1,3,5], 
        'e':[5,3,6], 
        'f':[7,8,9], 
        'g':[1,3,5], 
        'h':[5,3,6], 
        'i':[7,8,9], 
        'j':[1,3,5], 
        'k':[5,3,6], 
        'l':[7,4,3], 
        'm':[7,4,3]}) 

print (df) 
    a b c d e f g h i j k l m 
0 1 4 7 1 5 7 1 5 7 1 5 7 7 
1 2 5 8 3 3 8 3 3 8 3 3 4 4 
2 3 6 9 5 6 9 5 6 9 5 6 3 3 

print (np.r_[0,2,7: len(df.columns)]) 
[ 0 2 7 8 9 10 11 12] 

print (df.iloc[:, np.r_[0,2,7: len(df.columns)]]) 
    a c h i j k l m 
0 1 7 5 7 1 5 7 7 
1 2 8 3 8 3 3 4 4 
2 3 9 6 9 5 6 3 3 

또 다른 솔루션은 exclude listdifference와 :

exclude = ['b','d','e','f','g'] 
cols = df.columns.difference(exclude) 
print (cols) 
Index(['a', 'c', 'h', 'i', 'j', 'k', 'l', 'm'], dtype='object') 

print (df[cols]) 
    a c h i j k l m 
0 1 7 5 7 1 5 7 7 
1 2 8 3 8 3 3 4 4 
2 3 9 6 9 5 6 3 3 

또는 drop 열 :

exclude = ['b','d','e','f','g'] 
print (df.drop(exclude, axis=1)) 
    a c h i j k l m 
0 1 7 5 7 1 5 7 7 
1 2 8 3 8 3 3 4 4 
2 3 9 6 9 5 6 3 3 
1

단지 여분의 제안을 사용하여 이름 :
df=df.loc[:, ['a','c']].join(df.loc[:, 'h':'z'])