ValueError: cannot join with no overlapping index names

SOOYEON·2022년 9월 22일
0

pandas

목록 보기
26/37

엑셀 시트별 월 수를 데이터프레임 자체 연산을 시도했을 때 발생

for i in tqdm(list(df_xl.keys())):
    month_total += df_xl[i].value_counts('월').to_frame('count')

error

ValueError: cannot join with no overlapping index names

원인 : 데이터프레임에서 index 이름이 달라서 발생한 문제

month_total

    count
1	    0
2	    0
3	    0
4	    0
5	    0
6	    0
7	    0
8	    0
9	    0
10	    0
11	    0
12	    0

생성한 데이터프레임에 index의 이름을 생성한다.

month_total = pd.DataFrame({'count':[0,0,0,0,0,0,0,0,0,0,0,0]}, index =[1,2,3,4,5,6,7,8,9,10,11,12]) 
month_total.index.name= '월'
month_total

    count
월	
1		0
2		0
3		0
4		0
5		0
6		0
7		0
8		0
9		0	
10		0
11		0
12		0

---> 결과로 NaN값 출력됨

    count
월	
1	NaN
2	NaN
3	NaN
4	NaN
5	NaN
6	NaN
7	NaN
8	NaN
9	NaN
10	NaN
11	NaN
12	NaN

해당 시트의 월별 count값을 확인해보니, 시트별로 저장된 월이 달라서 발생했던 문제

add로 연산하는 방법 변경

for i in tqdm(list(df_xl.keys())):
    # month_total += df_xl[i].value_counts('월').to_frame('count')
    month_total = month_total.add(df_xl[i].value_counts('월').to_frame('count').reset_index().set_index('월').sort_index(),fill_value=0)
count

월 count 연산 확인

참고

0개의 댓글