2017-11-17 12 views
1

두 개의 시리즈 : 숫자 식별자가있는 식별자와 식별자를 이름과 연결하는 조회입니다. 어떻게 가입 할 수 있습니까? 예 :팬더 시리즈를 다른 시리즈의 조회로 사용하는 방법

name_lookup_series = pd.Series(['Google','YouTube','Facebook','Baidu','Wikipedia'], 
         index=["id_"+i for i in np.arange(5).astype('str')]) 
print(name_lookup_series) 

id_0  Google 
id_1  YouTube 
id_2  Facebook 
id_3  Baidu 
id_4 Wikipedia 
dtype: object 

원하는 데이터 프레임 :

Google  38 
YouTube  35 
Facebook  36 
Baidu  32 
Wikipedia 94 
dtype: int64 
,536,913,632 찾아 볼 수있는 이름을 가진

data_series = pd.Series(np.random.randint(0,100,5), 
         index = ["id_"+i for i in np.arange(5).astype('str')]) 
print(data_series) 

id_0 38 
id_1 35 
id_2 36 
id_3 32 
id_4 94 
dtype: int64 

시리즈 : 숫자 ID를

시리즈 10

팬더 스와 해킹하여이 작업을 수행 할 수 있지만이 같은 공통점은 join입니다.이 작업을 수행하는 데 더 관용적 인 방법이 있다고 가정합니다. 내 현재 방법 :

data_series.index = data_series.index.map(lambda x: name_lookup_series.loc[x]) 

이 작업을 수행 할 수있는 또 다른 방법이 있습니다. 더 깨끗한 코드와 한 줄로 만드십시오.

+0

* 주석의 질문에 회신하지 마십시오. * – user1717828

+0

두 개의 데이터 프레임이 항상 색인에 완벽하게 정렬됩니까? –

+0

@BradSolomon, 아니요, 그것은 MWE의 인공물입니다. 일반적으로'data_series'는'name_lookup_series'보다 큽니다. 또한 데이터의 각 항목에는 조회 할 이름이 있지만 데이터에 조회 할 이름이 없을 수 있습니다. – user1717828

답변

2

사용 rename 전용 - index 작업 때문에 :

s = data_series.rename(name_lookup_series) 
#it is same as 
#s = data_series.rename(index=name_lookup_series) 
print (s) 
Google  29 
YouTube  57 
Facebook  48 
Baidu  16 
Wikipedia 14 
dtype: int32 

또 다른 해결책 - 복잡 비트 - Seriesmap로 변환되는 것은 :

data_series.index = data_series.index.to_series().map(name_lookup_series) 
print (data_series) 
Google  29 
YouTube  57 
Facebook  48 
Baidu  16 
Wikipedia 14 
dtype: int32 
1

데이터는 완벽하게 자신의 인덱스에 정렬되어있는 경우 :

pd.concat((name_lookup_series, data_series), axis=1) 
#    0 1 
# id_0  Google 13 
# id_1 YouTube 6 
# id_2 Facebook 22 
3 id_3  Baidu 77 
# id_4 Wikipedia 42 

인덱스에 항상 정렬되어 있지 않은 경우 pd.Series.align을 던져주십시오. 이것은 멋지게 .concat()에 전달할 수있는 튜플을 얻습니다.

pd.concat(name_lookup_series.align(data_series), axis=1) 
#    0 1 
# id_0  Google 13 
# id_1 YouTube 6 
# id_2 Facebook 22 
# id_3  Baidu 77 
# id_4 Wikipedia 42