2017-10-25 6 views
0

나는 하나의 색인 열과 두 번째 열을 포함하는 팬더 시리즈를 가지고있다.두 행의 값이 다른 경우 Series에서 두 행의 값을 병합/결합하는 방법은 무엇입니까?

색인 열에는 언어에 대한 몇 가지 약어가 포함되어있다. 이 색인 열에있는 두 개의 다른 값은 "영어"의 경우 "en"이고 "영국 영어"의 경우 "en-gb"입니다. 등등이있다 "ES"프랑스어 "에 대한" "스페인어,"FR 포함한이 열의 수많은 다른 값이다 "와

그래서 시리즈는 다음과 같은 :.

Index  0 

en   42000 
en-gb  500 
es   320 
und  143 
fr   50 

열, 0, 인덱스 열의 각 언어 값이 원래 데이터 프레임에 나타나는 횟수에 대한 값이 포함되어 있습니다.

"en"과 "en-gb"에 대해 두 개의 값을 결합하려고합니다. 1과 같이 계산됩니다.

Index  0 

en   42500 
es   320 
und  143 
fr   50 

편집 : 제안 원래 DataFrame을 수정하라고 말하고있다는 그리고는 다음과 같습니다 새로운 시리즈를 원한다. 이 제안의 문제점은 내 팬더 ​​시리즈의 소스로서 전통적인 데이터 프레임이 없다는 것입니다.

대신 내 팬더 ​​시리즈의 출처는 사전 목록이며 그 사전 내에서 키 중 하나는 다른 사전입니다.

분명히하기 위해 : 수천 개의 사전 목록.

각 사전의 키 중 하나는 "사용자"입니다.

"사용자"키의 값은 다른 사전입니다.

두 번째 사전에는 "lang"키와 "en", "en-gb", "es", "fr"등과 같은 값이 있습니다.

그래서 시각적으로, 내 원본 데이터의 샘플은 다음과 같습니다 같아요

list_of_things = [ 
{'id':4444, 'user': {'lang':'en', 'gibberish':'*#(#($&'}, 'location':'USA'}, 

{'id':555, 'user': {'lang':'fr', 'gibberish':'*#(#($&'}, 'location':'France'}, 

{'id':666, 'user': {'lang':'en-gb', 'gibberish':'*#(#($&'}, 'location':'Great Britain'}, 

{'id':777, 'user': {'lang':'en', 'gibberish':'*#(#($&'}, 'location':'USA'}, 

{'id':888, 'user': {'lang':'en', 'gibberish':'*#(#($&'}, 'location':'USA'}, {'id':999, 'user': {'lang':'en', 'gibberish':'*#(#($&'}, 'location':'USA'}, 

{'id':888, 'user': {'lang':'en', 'gibberish':'*#(#($&'}, 'location':'USA'}, {'id':999, 'user': {'lang':'en', 'gibberish':'*#(#($&'}, 'location':'USA'}, 
{'id':888, 'user': {'lang':'en', 'gibberish':'*#(#($&'}, 'location':'USA'}, {'id':999, 'user': {'lang':'es', 'gibberish':'*#(#($&'}, 'location':'Spain'}, 
{'id':888, 'user': {'lang':'en-gb', 'gibberish':'*#(#($&'}, 'location':'Great Britain'}, {'id':999, 'user': {'lang':'und', 'gibberish':'*#(#($&'}, 'location':'Unknown'}, 
] 
+0

두 개의 'es'를 따로 보관 하시겠습니까? – Wen

+0

아, 죄송합니다. 여기에 내 테이블을 만들 때 실수 한 것입니다. 이미 이미 하나의 인스턴스 만 있습니다. – TJE

답변

0

df.groupby(df['Index'].str[:2])['0'].sum() 

또는

df.groupby(df['Index'].str.split('-').str[0])['0'].sum() 

당신은 해보

Index 
en 42500 
es  320 
fr  50 
un  143 
+0

예고편 그는 예상 출력에 두 개의 'es'가 있습니다. – Wen

+0

@Wen, hmmm,하지만 의미가 없습니다. – Vaishali

+0

아, 죄송합니다. 여기에 내 테이블을 만들 때 실수 한 것입니다. 이미 이미 하나의 인스턴스 만 있습니다. – TJE

관련 문제