2014-12-02 3 views
4

데이터 프레임 (df)이 있고 데이터 프레임의 각 열에서 고유 한 값을 인쇄하려고합니다.팬더 데이터 프레임의 모든 열에 고유 한 값을 인쇄합니다.

나는 print 문에 변수 (I) [열 이름]을 대체해야

column_list = df.columns.values.tolist() 
for column_name in column_list: 
    print(df."[column_name]".unique() 

업데이트

내가 이것을 사용하는 경우 : 나는 "예기치 않은 EOF 구문 분석"과를 얻을 수 추가 세부 사항 없음. 아래

column_list = sorted_data.columns.values.tolist() 
for column_name in column_list: 
     print(sorted_data[column_name].unique() 

당신의 구문의 차이 무엇입니까

YS가-L (위)과 :

for column_name in sorted_data: 
     print(column_name) 
     s = sorted_data[column_name].unique() 
     for i in s: 
     print(str(i)) 
+0

print 문에 닫는 괄호가 없기 때문에 오류가 발생합니다. – Marius

답변

14

그것은 다음과 같이 더 간결하게 작성할 수 있습니다

for col in df: 
    print df[col].unique() 

을 일반적으로 [] 연산자 (예 : df['col']) 또는 attribute (예 : df.col)을 사용하여 indexing을 통해 DataFrame의 열에 액세스 할 수 있습니다.

속성 액세스는 대상 열 이름을 미리 알고 있지만 몇 가지주의 사항이있을 때 코드를 좀 더 간결하게 만듭니다. 예를 들어 열 이름이 유효한 파이썬 식별자 (예 : df.123)가 아닌 경우 작동하지 않습니다. 또는 내장 된 DataFrame 속성 (예 : df.index)과 충돌합니다. 한편, [] 표기법은 항상 작동해야합니다.

+0

환상적입니다. 그래서 열이 변수 일 때 df.col-name 앞에 점을 포함시키지 않으면 데이터 그램의 일부인 변수를 참조 할 때?! – yoshiserry

+0

@yoshiserry : 일반적으로 도트 표기법 :'df.my_col', * 또는 * 색인 표기법을 사용하여 열 이름을 문자열로 사용하여 열에 액세스합니다.'df [ 'my_col']'. 당신은 조금 두 가지를 혼합하는 것 같습니다. – Marius

+0

감사합니다. Marius, 색인 표기법을 사용할 때 구문 오류가 발생합니다 (편집 참조). – yoshiserry

1

당신이 당신의 의견에 언급 한 바와 같이 여러 별도의 dataframes을 만들려고하는 경우, dataframes의 사전 작성 :

:

df_dict = dict(zip([i for i in df.columns] , [pd.DataFrame(df[i].unique(), columns=[i]) for i in df.columns])) 

그런 다음 당신은 쉽게 열 이름을 사용하는 dataframe에 액세스 할 수 있습니다

df_dict[column name] 
관련 문제