다음은 두 개의 변수에 저장된 두 개의 데이터 프레임입니다.
> print(df.head())
>
club_name tr_jan tr_dec year
0 ADO Den Haag 1368 1422 2010
1 ADO Den Haag 1455 1477 2011
2 ADO Den Haag 1461 1443 2012
3 ADO Den Haag 1437 1383 2013
4 ADO Den Haag 1386 1422 2014
> print(rankingdf.head())
>
club_name ranking year
0 ADO Den Haag 12 2010
1 ADO Den Haag 13 2011
2 ADO Den Haag 11 2012
3 ADO Den Haag 14 2013
4 ADO Den Haag 17 2014
이 코드를 사용하여이 두 가지를 병합하려고합니다.
new_df = df.merge(ranking_df, on=['club_name', 'year'], how='left')
how = 'left'는 표준 df보다 순위 df에 데이터 포인트가 적기 때문에 추가되었습니다.
예상되는 동작은 다음과 같습니다.
> print(new_df.head())
>
club_name tr_jan tr_dec year ranking
0 ADO Den Haag 1368 1422 2010 12
1 ADO Den Haag 1455 1477 2011 13
2 ADO Den Haag 1461 1443 2012 11
3 ADO Den Haag 1437 1383 2013 14
4 ADO Den Haag 1386 1422 2014 17
하지만이 오류가 발생합니다.
ValueError : 개체 및 int64 열을 병합하려고합니다. 계속하려면 pd.concat을 사용해야합니다.
그러나 나무를 추가하는 것이 아니라 병합하고 싶기 때문에 concat을 사용하고 싶지 않습니다.
내 마음에 이상한 또 다른 동작은 첫 번째 df를 .csv에 저장 한 다음 해당 .csv를 데이터 프레임에로드하면 코드가 작동한다는 것입니다.
그 코드 :
df = pd.DataFrame(data_points, columns=['club_name', 'tr_jan', 'tr_dec', 'year'])
df.to_csv('preliminary.csv')
df = pd.read_csv('preliminary.csv', index_col=0)
ranking_df = pd.DataFrame(rankings, columns=['club_name', 'ranking', 'year'])
new_df = df.merge(ranking_df, on=['club_name', 'year'], how='left')
index_col = 0 매개 변수와 관련이 있다고 생각합니다. 그러나 나는 그것을 저장하지 않고 고칠 생각이 없습니다.별로 중요하지 않지만 그것을 해야하는 일종의 성가심입니다.