CONCATENATING AND MERGING¶
In [4]:
import pandas as pd
In [5]:
df1 = pd.DataFrame({'A': ['A0', 'A1', 'A2', 'A3'],
'B': ['B0', 'B1', 'B2', 'B3'],
'C': ['C0', 'C1', 'C2', 'C3'],
'D': ['D0', 'D1', 'D2', 'D3']},
index=[0, 1, 2, 3])
In [6]:
df1
Out[6]:
A | B | C | D | |
---|---|---|---|---|
0 | A0 | B0 | C0 | D0 |
1 | A1 | B1 | C1 | D1 |
2 | A2 | B2 | C2 | D2 |
3 | A3 | B3 | C3 | D3 |
In [7]:
df2 = pd.DataFrame({'A': ['A4', 'A5', 'A6', 'A7'],
'B': ['B4', 'B5', 'B6', 'B7'],
'C': ['C4', 'C5', 'C6', 'C7'],
'D': ['D4', 'D5', 'D6', 'D7']},
index=[4, 5, 6, 7])
In [8]:
df2
Out[8]:
A | B | C | D | |
---|---|---|---|---|
4 | A4 | B4 | C4 | D4 |
5 | A5 | B5 | C5 | D5 |
6 | A6 | B6 | C6 | D6 |
7 | A7 | B7 | C7 | D7 |
In [9]:
df3 = pd.DataFrame({'A': ['A8', 'A9', 'A10', 'A11'],
'B': ['B8', 'B9', 'B10', 'B11'],
'C': ['C8', 'C9', 'C10', 'C11'],
'D': ['D8', 'D9', 'D10', 'D11']},
index=[8, 9, 10, 11])
In [10]:
df3
Out[10]:
A | B | C | D | |
---|---|---|---|---|
8 | A8 | B8 | C8 | D8 |
9 | A9 | B9 | C9 | D9 |
10 | A10 | B10 | C10 | D10 |
11 | A11 | B11 | C11 | D11 |
In [12]:
# 데이터 프레임을 하나로 합친다. (컬럼이 같은경우)
pd.concat( [df1,df2,df3])
Out[12]:
A | B | C | D | |
---|---|---|---|---|
0 | A0 | B0 | C0 | D0 |
1 | A1 | B1 | C1 | D1 |
2 | A2 | B2 | C2 | D2 |
3 | A3 | B3 | C3 | D3 |
4 | A4 | B4 | C4 | D4 |
5 | A5 | B5 | C5 | D5 |
6 | A6 | B6 | C6 | D6 |
7 | A7 | B7 | C7 | D7 |
8 | A8 | B8 | C8 | D8 |
9 | A9 | B9 | C9 | D9 |
10 | A10 | B10 | C10 | D10 |
11 | A11 | B11 | C11 | D11 |
In [ ]:
In [17]:
# Creating a dataframe from a dictionary
raw_data = {
'Employee ID': ['1', '2', '3', '4', '5'],
'first name': ['Diana', 'Cynthia', 'Shep', 'Ryan', 'Allen'],
'last name': ['Bouchard', 'Ali', 'Rob', 'Mitch', 'Steve']}
df_Engineering_dept = pd.DataFrame(raw_data, columns = ['Employee ID', 'first name', 'last name'])
df_Engineering_dept
Out[17]:
Employee ID | first name | last name | |
---|---|---|---|
0 | 1 | Diana | Bouchard |
1 | 2 | Cynthia | Ali |
2 | 3 | Shep | Rob |
3 | 4 | Ryan | Mitch |
4 | 5 | Allen | Steve |
In [18]:
raw_data = {
'Employee ID': ['6', '7', '8', '9', '10'],
'first name': ['Bill', 'Dina', 'Sarah', 'Heather', 'Holly'],
'last name': ['Christian', 'Mo', 'Steve', 'Bob', 'Michelle']}
df_Finance_dept = pd.DataFrame(raw_data, columns = ['Employee ID', 'first name', 'last name'])
df_Finance_dept
Out[18]:
Employee ID | first name | last name | |
---|---|---|---|
0 | 6 | Bill | Christian |
1 | 7 | Dina | Mo |
2 | 8 | Sarah | Steve |
3 | 9 | Heather | Bob |
4 | 10 | Holly | Michelle |
In [19]:
raw_data = {
'Employee ID': ['1', '2', '3', '4', '5', '7', '8', '9', '10'],
'Salary [$/hour]': [25, 35, 45, 48, 49, 32, 33, 34, 23]}
df_salary = pd.DataFrame(raw_data, columns = ['Employee ID','Salary [$/hour]'])
df_salary
Out[19]:
Employee ID | Salary [$/hour] | |
---|---|---|
0 | 1 | 25 |
1 | 2 | 35 |
2 | 3 | 45 |
3 | 4 | 48 |
4 | 5 | 49 |
5 | 7 | 32 |
6 | 8 | 33 |
7 | 9 | 34 |
8 | 10 | 23 |
In [26]:
df_all = pd.concat( [df_Engineering_dept, df_Finance_dept] )
In [27]:
df_all
Out[27]:
Employee ID | first name | last name | |
---|---|---|---|
0 | 1 | Diana | Bouchard |
1 | 2 | Cynthia | Ali |
2 | 3 | Shep | Rob |
3 | 4 | Ryan | Mitch |
4 | 5 | Allen | Steve |
0 | 6 | Bill | Christian |
1 | 7 | Dina | Mo |
2 | 8 | Sarah | Steve |
3 | 9 | Heather | Bob |
4 | 10 | Holly | Michelle |
In [22]:
df_salary
Out[22]:
Employee ID | Salary [$/hour] | |
---|---|---|
0 | 1 | 25 |
1 | 2 | 35 |
2 | 3 | 45 |
3 | 4 | 48 |
4 | 5 | 49 |
5 | 7 | 32 |
6 | 8 | 33 |
7 | 9 | 34 |
8 | 10 | 23 |
In [28]:
# 두 데이터 프레임의 공통 컬럼( 연결고리 )가 있으면,
# 이 컬럼을 기준으로 해서, 하나로 합칠 수 있다.
# pd.merge 함수 :
# 이 함수는 두개의 데이터프레임만 합칠 수 있다.
In [31]:
pd.merge( df_all , df_salary )
Out[31]:
Employee ID | first name | last name | Salary [$/hour] | |
---|---|---|---|---|
0 | 1 | Diana | Bouchard | 25 |
1 | 2 | Cynthia | Ali | 35 |
2 | 3 | Shep | Rob | 45 |
3 | 4 | Ryan | Mitch | 48 |
4 | 5 | Allen | Steve | 49 |
5 | 7 | Dina | Mo | 32 |
6 | 8 | Sarah | Steve | 33 |
7 | 9 | Heather | Bob | 34 |
8 | 10 | Holly | Michelle | 23 |
In [33]:
# 두 데이터 프레임에 공통으로 있는 데이터만 합쳐준다. (교집합)
pd.merge( df_all , df_salary , on= 'Employee ID')
Out[33]:
Employee ID | first name | last name | Salary [$/hour] | |
---|---|---|---|---|
0 | 1 | Diana | Bouchard | 25 |
1 | 2 | Cynthia | Ali | 35 |
2 | 3 | Shep | Rob | 45 |
3 | 4 | Ryan | Mitch | 48 |
4 | 5 | Allen | Steve | 49 |
5 | 7 | Dina | Mo | 32 |
6 | 8 | Sarah | Steve | 33 |
7 | 9 | Heather | Bob | 34 |
8 | 10 | Holly | Michelle | 23 |
In [34]:
# 직원정보는 다 나오게 해달라,
pd.merge( df_all , df_salary , on= 'Employee ID' , how= 'left') # left 의 의미는 왼쪽에 있는 변수에 데이터를 다 보여줘라.
Out[34]:
Employee ID | first name | last name | Salary [$/hour] | |
---|---|---|---|---|
0 | 1 | Diana | Bouchard | 25.0 |
1 | 2 | Cynthia | Ali | 35.0 |
2 | 3 | Shep | Rob | 45.0 |
3 | 4 | Ryan | Mitch | 48.0 |
4 | 5 | Allen | Steve | 49.0 |
5 | 6 | Bill | Christian | NaN |
6 | 7 | Dina | Mo | 32.0 |
7 | 8 | Sarah | Steve | 33.0 |
8 | 9 | Heather | Bob | 34.0 |
9 | 10 | Holly | Michelle | 23.0 |
In [36]:
# 연봉정보를 기준으로 합쳐달라
pd.merge( df_all , df_salary , on= 'Employee ID' , how= 'right')
Out[36]:
Employee ID | first name | last name | Salary [$/hour] | |
---|---|---|---|---|
0 | 1 | Diana | Bouchard | 25 |
1 | 2 | Cynthia | Ali | 35 |
2 | 3 | Shep | Rob | 45 |
3 | 4 | Ryan | Mitch | 48 |
4 | 5 | Allen | Steve | 49 |
5 | 7 | Dina | Mo | 32 |
6 | 8 | Sarah | Steve | 33 |
7 | 9 | Heather | Bob | 34 |
8 | 10 | Holly | Michelle | 23 |
'DataScience > Pandas' 카테고리의 다른 글
Pandas datetime,datetime64,데이터프레임 날짜 일괄처리 (0) | 2022.11.30 |
---|---|
Pandas Tip[1] 문자열 컬럼의 슬라이싱. str (0) | 2022.11.30 |
Pandas 데이터프레임 오름차순, 내림차순 정렬 .Sort_values() ,sort_index() (0) | 2022.11.25 |
Pandas 사용자 정의 함수사용 .apply(), 판다스내장.str라이브러리 (0) | 2022.11.25 |
Pandas 카테고리컬, groupby(), 특정 데이터 가져오기 (0) | 2022.11.24 |