Bạn đang đi đúng hướng, ngoại trừ việc
print[df1]
1 không kết hợp hai khung dữ liệu, thay vào đó, nó sắp xếp chúng sao cho hai khung dữ liệu có cùng cấu hình hàng và/hoặc cột. Hãy thử một ví dụKhởi tạo hai khung dữ liệu với một số tên cột mô tả và dữ liệu đồ chơi
df1 = pd.DataFrame[[[1,2,3,4], [6,7,8,9]], columns=['D', 'B', 'E', 'A'], index=[1,2]]
df2 = pd.DataFrame[[[10,20,30,40], [60,70,80,90], [600,700,800,900]], columns=['A', 'B', 'C', 'D'], index=[2,3,4]]
Bây giờ, hãy tự xem các khung dữ liệu này
print[df1]
D B E A 1 1 2 3 4 2 6 7 8 9
print[df2]
A B C D 2 10 20 30 40 3 60 70 80 90 4 600 700 800 900
Hãy căn chỉnh hai khung dữ liệu này, căn chỉnh theo cột [
print[df1]
2] và thực hiện phép nối ngoài trên nhãn cột [print[df1]
3]________số 8_______A B C D E 1 4 2 NaN 1 3 2 9 7 NaN 6 8 A B C D E 2 10 20 30 40 NaN 3 60 70 80 90 NaN 4 600 700 800 900 NaN
Một vài điều cần chú ý ở đây
- Các cột trong
4 đã được sắp xếp lại để chúng thẳng hàng với các cột trongprint[df1]
5print[df1]
- Có một cột có nhãn
6 đã được thêm vàoprint[df1]
4 và một cột có nhãnprint[df1]
8 đã được thêm vàoprint[df1]
5. Những cột này đã được lấp đầy bằngprint[df1]
0. Điều này là do chúng tôi đã thực hiện nối ngoài trên nhãn cộtD B E A 1 1 2 3 4 2 6 7 8 9
- Không có giá trị nào bên trong DataFrames bị thay đổi
- Lưu ý rằng các nhãn hàng không được căn chỉnh; . Điều này là do chúng tôi đã yêu cầu căn chỉnh trên các cột [
2]print[df1]
Điều gì xảy ra nếu chúng ta căn chỉnh trên cả hàng và cột, nhưng thay đổi tham số
D B E A
1 1 2 3 4
2 6 7 8 9
6 thành D B E A
1 1 2 3 4
2 6 7 8 9
7?a1, a2 = df1.align[df2, join='right', axis=None]
print[a1]
print[a2]
A B C D 2 9.0 7.0 NaN 6.0 3 NaN NaN NaN NaN 4 NaN NaN NaN NaN A B C D 2 10 20 30 40 3 60 70 80 90 4 600 700 800 900
Lưu ý rằng
- Chỉ các cột và hàng được tìm thấy trong khung dữ liệu "đúng" [
5] được giữ lại. Cộtprint[df1]
8 không còn tồn tại. Điều này là do chúng tôi đã nối phải trên cả nhãn cột và nhãn hàngprint[df1]
- Các hàng có nhãn
2 vàD B E A 1 1 2 3 4 2 6 7 8 9
3 đã được thêm vàoD B E A 1 1 2 3 4 2 6 7 8 9
4, được điền bằngprint[df1]
3. Điều này là do chúng tôi đã yêu cầu căn chỉnh trên cả hàng và cột [print[df2]
4]print[df2]
- Nhãn hàng hiện được căn chỉnh cũng như nhãn cột
- Một lần nữa, lưu ý rằng không có giá trị thực tế nào trong các khung dữ liệu bị thay đổi
Cuối cùng, chúng ta hãy xem mã trong câu hỏi, với
print[df2]
5 và print[df1]
2a1, a2 = df1.align[df2, join='inner', axis=1]
print[a1]
print[a2]
0print[df1]
- Chỉ các nhãn cột được căn chỉnh [______0_______2]
- Chỉ các nhãn cột có trong cả
4 vàprint[df1]
5 được giữ lại [print[df1]
5]print[df2]
Tóm lại, hãy sử dụng
A B C D
2 10 20 30 40
3 60 70 80 90
4 600 700 800 900
1 khi bạn muốn đảm bảo việc sắp xếp các hàng và/hoặc cột giống nhau giữa hai khung dữ liệu mà không làm thay đổi bất kỳ dữ liệu nào có trong hai khung dữ liệu Trong hướng dẫn này, chúng ta sẽ tìm hiểu phương pháp DataFrame.align[]
của python pandas. Phương thức này căn chỉnh hai đối tượng trên trục của chúng bằng phương thức nối đã chỉ định. Phương pháp này hữu ích khi chúng tôi muốn đồng bộ hóa khung dữ liệu với khung dữ liệu khác hoặc khung dữ liệu với Sê-ri bằng các phương thức nối khác nhau như bên ngoài, bên trong, bên trái và bên phải
cú pháp
Cú pháp cần thiết để sử dụng hàm này như sau
DataFrame.align[other, join='outer', axis=None, level=None, copy=True, fill_value=None, method=None, limit=None, fill_axis=0, broadcast_axis=None]
Thông số
khác. Nó có thể là DataFrame hoặc Sê-ri
tham gia. 'bên ngoài', 'bên trong', 'trái', 'phải'. Mặc định là tham gia 'bên ngoài'
trục. trục được phép của đối tượng khác, mặc định Không có. Căn chỉnh trên chỉ mục [0], cột [1] hoặc cả hai [Không có]
cấp độ. int hoặc tên cấp độ, mặc định Không có. Truyền phát trên một cấp độ, khớp với các giá trị Chỉ mục trên cấp độ Đa chỉ số đã thông qua
sao chép. bool, mặc định Đúng. Luôn trả về các đối tượng mới. Nếu copy=False và không yêu cầu lập chỉ mục lại thì các đối tượng ban đầu sẽ được trả về
fill_value. vô hướng, np mặc định. NaN. Giá trị để sử dụng cho các giá trị bị thiếu. Mặc định là NaN, nhưng có thể là bất kỳ giá trị “tương thích” nào
phương thức{'chèn lấp', 'bfill', 'pad', 'fill', Không có}, mặc định Không có
giới hạn. int, mặc định Không có
fill_axis {0 hoặc ‘chỉ mục’, 1 hoặc ‘cột’}, mặc định 0. Làm đầy trục, phương pháp và giới hạn
Broadcast_axis {0 hoặc ‘index’, 1 hoặc ‘columns’}, mặc định Không có. Phát các giá trị dọc theo trục này, nếu căn chỉnh hai đối tượng có kích thước khác nhau
Thí dụ. Tạo và in DataFrame
Tạo hai khung dữ liệu với các chỉ mục, cột khác nhau và in đầu ra
df1 = pd.DataFrame[[['Abhishek',100,'Science',90], ['Anurag',101,'Science',85]], columns=['Name', 'Roll No', 'Subject', 'Marks'], index=[1,2]]
df2 = pd.DataFrame[[['Chetan',103,75], ['Divya',104,80], ['Diya',105,92]], columns=['Name', 'Roll No', 'Marks'], index=[2,3,4]]
print["----------Printing DataFrame 1----------"]
print[df1]
print["----------Printing DataFrame 2----------"]
print[df2]
Sau khi chạy chương trình ta sẽ được kết quả như sau
----------In DataFrame 1-----------
Tên cuộn Không chủ đề đánh dấu
1 Abhishek 100 Khoa học 90
2 Anurag 101 Khoa học 85
---------- In khung dữ liệu 2 ----------
Tên cuộn Không có dấu
2 Chetan 103 75
3 Divya 104 80
4 Diya 105 92
Thí dụ. Căn chỉnh với Left
Tham gia trên Columns[axis=1]
Ví dụ dưới đây cho thấy cách căn chỉnh hai khung dữ liệu khác nhau với
df1 = pd.DataFrame[[['Abhishek',100,'Science',90], ['Anurag',101,'Science',85]], columns=['Name', 'Roll No', 'Subject', 'Marks'], index=[1,2]]
df2 = pd.DataFrame[[['Chetan',103,75], ['Divya',104,80], ['Diya',105,92]], columns=['Name', 'Roll No', 'Marks'], index=[2,3,4]]
print["----------Printing DataFrame 1----------"]
print[df1]
print["----------Printing DataFrame 2----------"]
print[df2]
0join trên các cộtdf1 = pd.DataFrame[[['Abhishek',100,'Science',90], ['Anurag',101,'Science',85]], columns=['Name', 'Roll No', 'Subject', 'Marks'], index=[1,2]]
df2 = pd.DataFrame[[['Chetan',103,75], ['Divya',104,80], ['Diya',105,92]], columns=['Name', 'Roll No', 'Marks'], index=[2,3,4]]
a1, a2 = df1.align[df2, join='left', axis=1]
print["---------After Aligning to the left DataFrame 1--------"]
print[a1]
print["---------After Aligning to the left DataFrame 2--------"]
print[a2]
Sau khi chạy chương trình ta sẽ được kết quả như sau
---------Sau khi Căn chỉnh sang bên trái DataFrame 1--------
Tên cuộn Không chủ đề đánh dấu
1 Abhishek 100 Khoa học 90
2 Anurag 101 Khoa học 85
---------Sau khi Căn chỉnh sang DataFrame bên trái 2--------
Tên cuộn Không chủ đề đánh dấu
2 Chetan 103 NaN 75
3 Divya 104 NaN 80
4 Diya 105 NaN 92
Thí dụ. Phù hợp với df1 = pd.DataFrame[[['Abhishek',100,'Science',90], ['Anurag',101,'Science',85]], columns=['Name', 'Roll No', 'Subject', 'Marks'], index=[1,2]]
df2 = pd.DataFrame[[['Chetan',103,75], ['Divya',104,80], ['Diya',105,92]], columns=['Name', 'Roll No', 'Marks'], index=[2,3,4]]
print["----------Printing DataFrame 1----------"]
print[df1]
print["----------Printing DataFrame 2----------"]
print[df2]
1Tham gia trên df1 = pd.DataFrame[[['Abhishek',100,'Science',90], ['Anurag',101,'Science',85]], columns=['Name', 'Roll No', 'Subject', 'Marks'], index=[1,2]]
df2 = pd.DataFrame[[['Chetan',103,75], ['Divya',104,80], ['Diya',105,92]], columns=['Name', 'Roll No', 'Marks'], index=[2,3,4]]
print["----------Printing DataFrame 1----------"]
print[df1]
print["----------Printing DataFrame 2----------"]
print[df2]
2
df1 = pd.DataFrame[[['Abhishek',100,'Science',90], ['Anurag',101,'Science',85]], columns=['Name', 'Roll No', 'Subject', 'Marks'], index=[1,2]]
df2 = pd.DataFrame[[['Chetan',103,75], ['Divya',104,80], ['Diya',105,92]], columns=['Name', 'Roll No', 'Marks'], index=[2,3,4]]
print["----------Printing DataFrame 1----------"]
print[df1]
print["----------Printing DataFrame 2----------"]
print[df2]
df1 = pd.DataFrame[[['Abhishek',100,'Science',90], ['Anurag',101,'Science',85]], columns=['Name', 'Roll No', 'Subject', 'Marks'], index=[1,2]]
df2 = pd.DataFrame[[['Chetan',103,75], ['Divya',104,80], ['Diya',105,92]], columns=['Name', 'Roll No', 'Marks'], index=[2,3,4]]
print["----------Printing DataFrame 1----------"]
print[df1]
print["----------Printing DataFrame 2----------"]
print[df2]
Ví dụ dưới đây cho thấy cách căn chỉnh hai khung dữ liệu khác nhau với
df1 = pd.DataFrame[[['Abhishek',100,'Science',90], ['Anurag',101,'Science',85]], columns=['Name', 'Roll No', 'Subject', 'Marks'], index=[1,2]]
df2 = pd.DataFrame[[['Chetan',103,75], ['Divya',104,80], ['Diya',105,92]], columns=['Name', 'Roll No', 'Marks'], index=[2,3,4]]
print["----------Printing DataFrame 1----------"]
print[df1]
print["----------Printing DataFrame 2----------"]
print[df2]
3 trên các cộtdf1 = pd.DataFrame[[['Abhishek',100,'Science',90], ['Anurag',101,'Science',85]], columns=['Name', 'Roll No', 'Subject', 'Marks'], index=[1,2]]
df2 = pd.DataFrame[[['Chetan',103,75], ['Divya',104,80], ['Diya',105,92]], columns=['Name', 'Roll No', 'Marks'], index=[2,3,4]]
a1, a2 = df1.align[df2, join='right', axis=1]
print["---------After Aligning to the right DataFrame 1--------"]
print[a1]
print["---------After Aligning to the right DataFrame 2--------"]
print[a2]
Sau khi chạy chương trình ta sẽ được kết quả như sau
---------Sau khi căn chỉnh đúng DataFrame 1--------
Tên cuộn Không có dấu
1 Abhisek 100 90
2 Anurag 101 85
---------Sau khi căn chỉnh đúng DataFrame 2--------
Tên cuộn Không có dấu
2 Chetan 103 75
3 Divya 104 80
4 Diya 105 92
Thí dụ. Phù hợp với df1 = pd.DataFrame[[['Abhishek',100,'Science',90], ['Anurag',101,'Science',85]], columns=['Name', 'Roll No', 'Subject', 'Marks'], index=[1,2]]
df2 = pd.DataFrame[[['Chetan',103,75], ['Divya',104,80], ['Diya',105,92]], columns=['Name', 'Roll No', 'Marks'], index=[2,3,4]]
print["----------Printing DataFrame 1----------"]
print[df1]
print["----------Printing DataFrame 2----------"]
print[df2]
4Tham gia trên Columns[axis=1]
df1 = pd.DataFrame[[['Abhishek',100,'Science',90], ['Anurag',101,'Science',85]], columns=['Name', 'Roll No', 'Subject', 'Marks'], index=[1,2]]
df2 = pd.DataFrame[[['Chetan',103,75], ['Divya',104,80], ['Diya',105,92]], columns=['Name', 'Roll No', 'Marks'], index=[2,3,4]]
print["----------Printing DataFrame 1----------"]
print[df1]
print["----------Printing DataFrame 2----------"]
print[df2]
Ví dụ dưới đây cho thấy cách căn chỉnh hai khung dữ liệu khác nhau với
df1 = pd.DataFrame[[['Abhishek',100,'Science',90], ['Anurag',101,'Science',85]], columns=['Name', 'Roll No', 'Subject', 'Marks'], index=[1,2]]
df2 = pd.DataFrame[[['Chetan',103,75], ['Divya',104,80], ['Diya',105,92]], columns=['Name', 'Roll No', 'Marks'], index=[2,3,4]]
print["----------Printing DataFrame 1----------"]
print[df1]
print["----------Printing DataFrame 2----------"]
print[df2]
4join trên các cộtdf1 = pd.DataFrame[[['Abhishek',100,'Science',90], ['Anurag',101,'Science',85]], columns=['Name', 'Roll No', 'Subject', 'Marks'], index=[1,2]]
df2 = pd.DataFrame[[['Chetan',103,75], ['Divya',104,80], ['Diya',105,92]], columns=['Name', 'Roll No', 'Marks'], index=[2,3,4]]
a1, a2 = df1.align[df2, join='outer', axis=1]
print["---------After Aligning to the outer DataFrame 1--------"]
print[a1]
print["---------After Aligning to the outer DataFrame 2--------"]
print[a2]
Sau khi chạy chương trình ta sẽ được kết quả như sau
---------Sau khi căn chỉnh với DataFrame bên ngoài 1--------
Đánh dấu Tên Cuộn Không Chủ đề
1 90 Abhishek 100 Khoa học
2 85 Anurag 101 Khoa học
---------Sau khi Căn chỉnh với DataFrame 2 bên ngoài ---------
Đánh dấu Tên Cuộn Không Chủ đề
2 75 Chetan 103 NaN
3 80 Divya 104 NaN
4 92 Diya 105 NaN
Thí dụ. Phù hợp với df1 = pd.DataFrame[[['Abhishek',100,'Science',90], ['Anurag',101,'Science',85]], columns=['Name', 'Roll No', 'Subject', 'Marks'], index=[1,2]]
df2 = pd.DataFrame[[['Chetan',103,75], ['Divya',104,80], ['Diya',105,92]], columns=['Name', 'Roll No', 'Marks'], index=[2,3,4]]
print["----------Printing DataFrame 1----------"]
print[df1]
print["----------Printing DataFrame 2----------"]
print[df2]
7Tham gia trên Columns[axis=1]
df1 = pd.DataFrame[[['Abhishek',100,'Science',90], ['Anurag',101,'Science',85]], columns=['Name', 'Roll No', 'Subject', 'Marks'], index=[1,2]]
df2 = pd.DataFrame[[['Chetan',103,75], ['Divya',104,80], ['Diya',105,92]], columns=['Name', 'Roll No', 'Marks'], index=[2,3,4]]
print["----------Printing DataFrame 1----------"]
print[df1]
print["----------Printing DataFrame 2----------"]
print[df2]
Ví dụ dưới đây cho thấy cách căn chỉnh hai khung dữ liệu khác nhau với
df1 = pd.DataFrame[[['Abhishek',100,'Science',90], ['Anurag',101,'Science',85]], columns=['Name', 'Roll No', 'Subject', 'Marks'], index=[1,2]]
df2 = pd.DataFrame[[['Chetan',103,75], ['Divya',104,80], ['Diya',105,92]], columns=['Name', 'Roll No', 'Marks'], index=[2,3,4]]
print["----------Printing DataFrame 1----------"]
print[df1]
print["----------Printing DataFrame 2----------"]
print[df2]
0join trên các cộtdf1 = pd.DataFrame[[['Abhishek',100,'Science',90], ['Anurag',101,'Science',85]], columns=['Name', 'Roll No', 'Subject', 'Marks'], index=[1,2]]
df2 = pd.DataFrame[[['Chetan',103,75], ['Divya',104,80], ['Diya',105,92]], columns=['Name', 'Roll No', 'Marks'], index=[2,3,4]]
a1, a2 = df1.align[df2, join='inner', axis=1]
print["---------After Aligning to the inner DataFrame 1--------"]
print[a1]
print["---------After Aligning to the inner DataFrame 2--------"]
print[a2]
Sau khi chạy chương trình ta sẽ được kết quả như sau
---------Sau khi căn chỉnh với DataFrame bên trong 1--------
Tên cuộn Không có dấu
1 Abhisek 100 90
2 Anurag 101 85
---------Sau khi Căn chỉnh với DataFrame 2 bên trong ---------
Tên cuộn Không có dấu
2 Chetan 103 75
3 Divya 104 80
4 Diya 105 92
Thí dụ. Căn chỉnh với Left
Tham gia trên df1 = pd.DataFrame[[['Abhishek',100,'Science',90], ['Anurag',101,'Science',85]], columns=['Name', 'Roll No', 'Subject', 'Marks'], index=[1,2]]
df2 = pd.DataFrame[[['Chetan',103,75], ['Divya',104,80], ['Diya',105,92]], columns=['Name', 'Roll No', 'Marks'], index=[2,3,4]]
a1, a2 = df1.align[df2, join='left', axis=1]
print["---------After Aligning to the left DataFrame 1--------"]
print[a1]
print["---------After Aligning to the left DataFrame 2--------"]
print[a2]
1
df1 = pd.DataFrame[[['Abhishek',100,'Science',90], ['Anurag',101,'Science',85]], columns=['Name', 'Roll No', 'Subject', 'Marks'], index=[1,2]]
df2 = pd.DataFrame[[['Chetan',103,75], ['Divya',104,80], ['Diya',105,92]], columns=['Name', 'Roll No', 'Marks'], index=[2,3,4]]
a1, a2 = df1.align[df2, join='left', axis=1]
print["---------After Aligning to the left DataFrame 1--------"]
print[a1]
print["---------After Aligning to the left DataFrame 2--------"]
print[a2]
Ví dụ dưới đây cho thấy cách căn chỉnh hai khung dữ liệu khác nhau với phép nối trái trên chỉ mục
df1 = pd.DataFrame[[['Abhishek',100,'Science',90], ['Anurag',101,'Science',85]], columns=['Name', 'Roll No', 'Subject', 'Marks'], index=[1,2]]
df2 = pd.DataFrame[[['Chetan',103,75], ['Divya',104,80], ['Diya',105,92]], columns=['Name', 'Roll No', 'Marks'], index=[2,3,4]]
a1, a2 = df1.align[df2, join='left', axis=0]
print["---------After Aligning to the left with axis=0, DataFrame 1--------"]
print[a1]
print["---------After Aligning to the left with axis=0, DataFrame 2--------"]
print[a2]
Sau khi chạy chương trình ta sẽ được kết quả như sau
---------Sau khi Căn sang trái với axis=0, DataFrame 1--------
Tên cuộn Không chủ đề đánh dấu
1 Abhishek 100 Khoa học 90
2 Anurag 101 Khoa học 85
---------Sau khi Căn sang trái với axis=0, DataFrame 2--------
Tên cuộn Không có dấu
1 NaN NaN NaN
2 Chetan 103. 0 75. 0
Phần kết luận
Trong hướng dẫn này, chúng ta đã học DataFrame của python pandas. phương thức căn chỉnh []. Chúng tôi hiểu cú pháp, tham số và các ví dụ đã giải bằng các phương thức nối và trục khác nhau