2017-11-18 3 views
1

팬더 dataframe의 열의 고유 한 쌍을 가져 오기 :내가 보이는 팬더의 dataframe을

name1 country1 name2 country2 
A  GER   B  USA 
C  GER   E  GER 
D  GER   Y  AUS 
E  GER   A  USA 

내가 포함 된 두 개의 열 namecountry와 새로운 dataframe을 얻고 싶은 (name1, country1)의 고유 쌍 (name2,country2).

예상되는 결과는 다음과 같아야합니다

name country 
A  GER  
C  GER  
D  GER  
E  GER  
B  USA 
A  USA 
Y  AUS 

나는 하나의 열 here 비슷한 무언가를 발견했다. 그러나이 솔루션을 문제점, 즉 열 쌍으로 변환하는 방법을 모르겠습니다. filter 의해

답변

1

1 필터 열 전치 값을 평평 생성자 새로운 DataFrame 만들기 : 고유 쌍

df = pd.lreshape(df, {'name':['name1','name2'], 
         'country':['country1','country2']}) 
print (df) 
    name country 
0 A  GER 
1 C  GER 
2 D  GER 
3 E  GER 
4 B  USA 
5 E  GER 
6 Y  AUS 
7 A  USA 

마지막 :

a = df.filter(like='name').values.T.ravel() 
b = df.filter(like='country').values.T.ravel() 
df = pd.DataFrame({'name':a, 'country':b}, columns=['name','country']) 
print (df) 
    name country 
0 A  GER 
1 C  GER 
2 D  GER 
3 E  GER 
4 B  USA 
5 E  GER 
6 Y  AUS 
7 A  USA 

미등록 기능 lreshape 또 다른 해결책 drop_duplicates :

를 사용하십시오.
df = df.drop_duplicates() 
print (df) 
    name country 
0 A  GER 
1 C  GER 
2 D  GER 
3 E  GER 
4 B  USA 
6 Y  AUS 
7 A  USA 
+0

어떤 솔루션이 더 좋습니까? – beta

+1

처음에는 더 빠르다고 생각합니다. – jezrael

관련 문제