pd.merge(pd.merge(df1,df2,'left',on='year',suffixes=['_a','_b']),
df3,'left',on='year',suffixes=['','_c'])
또 다른 방법 :
소스 DFS :
In [71]: dfs = [d1,d2,d3]
와 접미사의 목록 :
In [68]: d1
Out[68]:
col1 col2 col3
0 1 2 3
1 4 5 6
In [69]: d2
Out[69]:
col1 col2 col3
0 11 12 13
1 14 15 16
In [70]: d3
Out[70]:
col1 col2 col3
0 21 22 23
1 24 25 26
것은 이제 DFS의 목록을 만들어 보자
,369 다음과 같이 1,363,210
In [73]: suffixes = ['_a','_b','_c']
이제 우리는 한 번에 병합 할 수 있습니다
In [74]: pd.concat([df.add_suffix(suffixes[i]) for i,df in enumerate(dfs)], axis=1)
Out[74]:
col1_a col2_a col3_a col1_b col2_b col3_b col1_c col2_c col3_c
0 1 2 3 11 12 13 21 22 23
1 4 5 6 14 15 16 24 25 26
짧은 설명 :
In [75]: [suffixes[i] for i,df in enumerate(dfs)]
Out[75]: ['_a', '_b', '_c']
In [76]: [df.add_suffix(suffixes[i]) for i,df in enumerate(dfs)]
Out[76]:
[ col1_a col2_a col3_a
0 1 2 3
1 4 5 6, col1_b col2_b col3_b
0 11 12 13
1 14 15 16, col1_c col2_c col3_c
0 21 22 23
1 24 25 26]
: 지능형리스트에 우리는 이미 이름이 바뀐 열 DFS의 목록을 생성하는 위대한 데모, 심지어 편집하기 전에! [List Comprehensions] (https://docs.python.org/3/tutorial/datastructures.html#list-comprehensions)은 종종 파이썬에 익숙하지 않은 사람들에게 혼란을 일으킬 수 있으므로 일반적으로 작은 설명이나 메모가 필요합니다. 그럼에도 불구하고 귀하의 대답은 명확하고 간결합니다. +1 – Aaron3468
@ Aaron3468, 감사합니다! 나는 짧은 설명을 추가했습니다 ... – MaxU
고마워요! pd.merge (pd.merge (df1, df2, 'left', on = 'year', 접미사 = [ '_ a', '_ b']), df3, '왼쪽', on = '연도', 접미사 = [ '', '_ c']) 데이터 프레임의 열이 동일해야합니다 (두 dfs를 병합하면 "_a"및 "_b"로 열이 변경되므로 df3과 동일하지는 않습니다. 이름 바꾸기 함수를 사용하여 세 번째 df의 접미어를 변경하는 방법은 무엇입니까? – Andrew