Hướng dẫn python join documentation - tài liệu tham gia python
Pandas cung cấp các cơ sở khác nhau để dễ dàng kết hợp với chuỗi hoặc DataFrame với các loại logic đã đặt khác nhau cho các chỉ mục và chức năng đại số quan hệ trong trường hợp hoạt động loại tham gia / hợp nhất. Show
Ngoài ra, Pandas cũng cung cấp các tiện ích để so sánh hai loạt hoặc DataFrame và tóm tắt sự khác biệt của chúng. Các đối tượng kết hợp#Hàm In [11]: result = pd.concat([df1, df4], axis=1).reindex(df1.index)8 (trong không gian tên chính của gấu trúc) thực hiện tất cả các hoạt động nặng thực hiện các hoạt động nối dọc theo một trục trong khi thực hiện logic đặt tùy chọn (liên kết hoặc giao lộ) của các chỉ mục (nếu có) trên các trục khác. Lưu ý rằng tôi nói rằng nếu có bất kỳ người nào vì chỉ có một trục nối duy nhất có thể cho chuỗi. Trước khi lặn vào tất cả các chi tiết của In [11]: result = pd.concat([df1, df4], axis=1).reindex(df1.index)9 và những gì nó có thể làm, đây là một ví dụ đơn giản: In [1]: 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 [2]: 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 [3]: 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 [4]: frames = [df1, df2, df3] In [5]: result = pd.concat(frames) Giống như chức năng anh chị em của nó trên ndarrays, In [12]: pd.concat([df1, df4.reindex(df1.index)], axis=1) Out[12]: A B C D B D F 0 A0 B0 C0 D0 NaN NaN NaN 1 A1 B1 C1 D1 NaN NaN NaN 2 A2 B2 C2 D2 B2 D2 F2 3 A3 B3 C3 D3 B3 D3 F30, In [12]: pd.concat([df1, df4.reindex(df1.index)], axis=1) Out[12]: A B C D B D F 0 A0 B0 C0 D0 NaN NaN NaN 1 A1 B1 C1 D1 NaN NaN NaN 2 A2 B2 C2 D2 B2 D2 F2 3 A3 B3 C3 D3 B3 D3 F31 lấy một danh sách hoặc chỉ định các đối tượng được gõ đồng nhất và kết hợp chúng với một số xử lý cấu hình của những gì cần làm với các trục khác khác: pd.concat( objs, axis=0, join="outer", ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True, )
Không có một chút bối cảnh, nhiều trong số những lập luận này không có ý nghĩa gì. Hãy để xem lại ví dụ trên. Giả sử chúng tôi muốn liên kết các khóa cụ thể với từng phần của khung dữ liệu băm nhỏ. Chúng ta có thể làm điều này bằng cách sử dụng đối số In [12]: pd.concat([df1, df4.reindex(df1.index)], axis=1) Out[12]: A B C D B D F 0 A0 B0 C0 D0 NaN NaN NaN 1 A1 B1 C1 D1 NaN NaN NaN 2 A2 B2 C2 D2 B2 D2 F2 3 A3 B3 C3 D3 B3 D3 F33: In [6]: result = pd.concat(frames, keys=["x", "y", "z"]) Như bạn có thể thấy (nếu bạn đã đọc phần còn lại của tài liệu), chỉ số kết quả của đối tượng có chỉ số phân cấp. Điều này có nghĩa là bây giờ chúng ta có thể chọn từng đoạn bằng khóa:hierarchical index. This means that we can now select out each chunk by key: In [7]: result.loc["y"] Out[7]: A B C D 4 A4 B4 C4 D4 5 A5 B5 C5 D5 6 A6 B6 C6 D6 7 A7 B7 C7 D7 Nó không phải là một sự kéo dài để xem làm thế nào điều này có thể rất hữu ích. Thêm chi tiết về chức năng này dưới đây. Ghi chú Điều đáng chú ý là In [11]: result = pd.concat([df1, df4], axis=1).reindex(df1.index)8 (và do đó In [13]: result = pd.concat([df1, df4], ignore_index=True, sort=False)4) tạo ra một bản sao đầy đủ của dữ liệu và việc tiếp tục sử dụng lại chức năng này có thể tạo ra một hiệu suất đáng kể. Nếu bạn cần sử dụng thao tác qua một số bộ dữ liệu, hãy sử dụng danh sách hiểu. frames = [ process_your_file(f) for f in files ] result = pd.concat(frames) Ghi chú Điều đáng chú ý là In [11]: result = pd.concat([df1, df4], axis=1).reindex(df1.index)8 (và do đó In [13]: result = pd.concat([df1, df4], ignore_index=True, sort=False)4) tạo ra một bản sao đầy đủ của dữ liệu và việc tiếp tục sử dụng lại chức năng này có thể tạo ra một hiệu suất đáng kể. Nếu bạn cần sử dụng thao tác qua một số bộ dữ liệu, hãy sử dụng danh sách hiểu. Khi kết hợp các khung dữ liệu với các trục được đặt tên, gấu trúc sẽ cố gắng bảo tồn các tên chỉ mục/cột này bất cứ khi nào có thể. Trong trường hợp tất cả các đầu vào chia sẻ một tên chung, tên này sẽ được gán cho kết quả. Khi các tên đầu vào không đồng ý, kết quả sẽ không được đặt tên. Điều tương tự cũng đúng với In [13]: result = pd.concat([df1, df4], ignore_index=True, sort=False) 5, nhưng logic được áp dụng riêng biệt trên cơ sở theo cấp độ.Đặt logic trên các trục khác#
Lấy giao lộ, In [13]: result = pd.concat([df1, df4], ignore_index=True, sort=False)7. In [8]: df4 = pd.DataFrame( ...: { ...: "B": ["B2", "B3", "B6", "B7"], ...: "D": ["D2", "D3", "D6", "D7"], ...: "F": ["F2", "F3", "F6", "F7"], ...: }, ...: index=[2, 3, 6, 7], ...: ) ...: In [9]: result = pd.concat([df1, df4], axis=1) Dưới đây là một ví dụ về từng phương pháp này. Đầu tiên, hành vi In [13]: result = pd.concat([df1, df4], ignore_index=True, sort=False)6 mặc định: In [10]: result = pd.concat([df1, df4], axis=1, join="inner") Đây là điều tương tự với In [13]: result = pd.concat([df1, df4], ignore_index=True, sort=False)7: In [11]: result = pd.concat([df1, df4], axis=1).reindex(df1.index) Cuối cùng, giả sử chúng tôi chỉ muốn sử dụng lại chỉ mục chính xác từ DataFrame gốc: In [12]: pd.concat([df1, df4.reindex(df1.index)], axis=1) Out[12]: A B C D B D F 0 A0 B0 C0 D0 NaN NaN NaN 1 A1 B1 C1 D1 NaN NaN NaN 2 A2 B2 C2 D2 B2 D2 F2 3 A3 B3 C3 D3 B3 D3 F3 Tương tự, chúng ta có thể lập chỉ mục trước khi kết hợp:Bỏ qua các chỉ mục trên trục nối# In [13]: result = pd.concat([df1, df4], ignore_index=True, sort=False) Kết hợp với các ndims hỗn hợp#Bạn có thể kết hợp một hỗn hợp các đối tượng pd.concat( objs, axis=0, join="outer", ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True, )02 và pd.concat( objs, axis=0, join="outer", ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True, )00. pd.concat( objs, axis=0, join="outer", ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True, )02 sẽ được chuyển đổi thành pd.concat( objs, axis=0, join="outer", ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True, )00 với tên cột là tên của pd.concat( objs, axis=0, join="outer", ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True, )02. pd.concat( objs, axis=0, join="outer", ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True, )0 Ghi chú Vì chúng tôi đã kết hợp một pd.concat( objs, axis=0, join="outer", ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True, )02 đến pd.concat( objs, axis=0, join="outer", ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True, )00, chúng tôi có thể đã đạt được kết quả tương tự với pd.concat( objs, axis=0, join="outer", ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True, )09. Để kết hợp một số lượng đối tượng gấu trúc tùy ý ( pd.concat( objs, axis=0, join="outer", ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True, )00 hoặc pd.concat( objs, axis=0, join="outer", ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True, )02), sử dụng In [11]: result = pd.concat([df1, df4], axis=1).reindex(df1.index)9. Nếu không tên pd.concat( objs, axis=0, join="outer", ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True, )02 được thông qua, chúng sẽ được đánh số liên tiếp. pd.concat( objs, axis=0, join="outer", ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True, )1 Vượt qua pd.concat( objs, axis=0, join="outer", ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True, )14 sẽ bỏ tất cả các tài liệu tham khảo tên. pd.concat( objs, axis=0, join="outer", ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True, )2 Thêm kết nối với các phím nhóm#Việc sử dụng khá phổ biến của đối số In [12]: pd.concat([df1, df4.reindex(df1.index)], axis=1) Out[12]: A B C D B D F 0 A0 B0 C0 D0 NaN NaN NaN 1 A1 B1 C1 D1 NaN NaN NaN 2 A2 B2 C2 D2 B2 D2 F2 3 A3 B3 C3 D3 B3 D3 F33 là ghi đè tên cột khi tạo pd.concat( objs, axis=0, join="outer", ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True, )00 mới dựa trên pd.concat( objs, axis=0, join="outer", ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True, )02 hiện có. Lưu ý cách hành vi mặc định bao gồm để cho kết quả pd.concat( objs, axis=0, join="outer", ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True, )00 kế thừa tên cha mẹ ____102, khi chúng tồn tại. pd.concat( objs, axis=0, join="outer", ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True, )3 Thông qua đối số In [12]: pd.concat([df1, df4.reindex(df1.index)], axis=1) Out[12]: A B C D B D F 0 A0 B0 C0 D0 NaN NaN NaN 1 A1 B1 C1 D1 NaN NaN NaN 2 A2 B2 C2 D2 B2 D2 F2 3 A3 B3 C3 D3 B3 D3 F33, chúng ta có thể ghi đè các tên cột hiện có. pd.concat( objs, axis=0, join="outer", ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True, )4 Hãy cùng xem xét một biến thể của ví dụ đầu tiên được trình bày: pd.concat( objs, axis=0, join="outer", ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True, )5 Bạn cũng có thể chuyển một dict cho In [11]: result = pd.concat([df1, df4], axis=1).reindex(df1.index)9 trong trường hợp đó, các khóa Dict sẽ được sử dụng cho đối số In [12]: pd.concat([df1, df4.reindex(df1.index)], axis=1) Out[12]: A B C D B D F 0 A0 B0 C0 D0 NaN NaN NaN 1 A1 B1 C1 D1 NaN NaN NaN 2 A2 B2 C2 D2 B2 D2 F2 3 A3 B3 C3 D3 B3 D3 F33 (trừ khi các khóa khác được chỉ định): pd.concat( objs, axis=0, join="outer", ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True, )6 pd.concat( objs, axis=0, join="outer", ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True, )7 Multiindex được tạo ra có các mức được xây dựng từ các khóa được thông qua và chỉ số của các mảnh pd.concat( objs, axis=0, join="outer", ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True, )00: pd.concat( objs, axis=0, join="outer", ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True, )8 Nếu bạn muốn chỉ định các cấp độ khác (đôi khi sẽ là trường hợp), bạn có thể làm như vậy bằng cách sử dụng đối số In [12]: pd.concat([df1, df4.reindex(df1.index)], axis=1) Out[12]: A B C D B D F 0 A0 B0 C0 D0 NaN NaN NaN 1 A1 B1 C1 D1 NaN NaN NaN 2 A2 B2 C2 D2 B2 D2 F2 3 A3 B3 C3 D3 B3 D3 F38: pd.concat( objs, axis=0, join="outer", ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True, )9 In [6]: result = pd.concat(frames, keys=["x", "y", "z"])0 Điều này khá bí truyền, nhưng thực sự cần thiết để thực hiện những thứ như Groupby trong đó thứ tự của một biến phân loại là có ý nghĩa. Nối các hàng vào DataFrame#Nếu bạn có một chuỗi mà bạn muốn nối như một hàng duy nhất vào pd.concat( objs, axis=0, join="outer", ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True, )00, bạn có thể chuyển đổi hàng thành pd.concat( objs, axis=0, join="outer", ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True, )00 và sử dụng In [11]: result = pd.concat([df1, df4], axis=1).reindex(df1.index)9 In [6]: result = pd.concat(frames, keys=["x", "y", "z"])1 Bạn nên sử dụng In [12]: pd.concat([df1, df4.reindex(df1.index)], axis=1) Out[12]: A B C D B D F 0 A0 B0 C0 D0 NaN NaN NaN 1 A1 B1 C1 D1 NaN NaN NaN 2 A2 B2 C2 D2 B2 D2 F2 3 A3 B3 C3 D3 B3 D3 F36 với phương pháp này để hướng dẫn DataFrame loại bỏ chỉ mục của nó. Nếu bạn muốn bảo tồn chỉ mục, bạn nên xây dựng một bản dữ liệu được chỉ định một cách thích hợp và nối hoặc nối các đối tượng đó. DataFrame kiểu cơ sở dữ liệu hoặc chuỗi được đặt tên tham gia/hợp nhất#Pandas có các hoạt động tham gia trong bộ nhớ đầy đủ tính năng, hiệu suất cao rất giống với cơ sở dữ liệu quan hệ như SQL. Các phương pháp này thực hiện tốt hơn đáng kể (trong một số trường hợp tốt hơn một thứ tự lớn hơn) so với các triển khai nguồn mở khác (như pd.concat( objs, axis=0, join="outer", ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True, )29 trong R). Lý do cho điều này là thiết kế thuật toán cẩn thận và bố cục nội bộ của dữ liệu trong pd.concat( objs, axis=0, join="outer", ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True, )00.high performance in-memory join operations idiomatically very similar to relational databases like SQL. These methods perform significantly better (in some cases well over an order of magnitude better) than other open source implementations (like pd.concat( objs, axis=0, join="outer", ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True, )29 in R). The reason for this is careful algorithmic design and the internal layout of the data in pd.concat( objs, axis=0, join="outer", ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True, )00. Xem sách dạy nấu ăn cho một số chiến lược nâng cao.cookbook for some advanced strategies. Người dùng quen thuộc với SQL nhưng mới với gấu trúc có thể quan tâm đến việc so sánh với SQL.comparison with SQL. Pandas cung cấp một chức năng duy nhất, pd.concat( objs, axis=0, join="outer", ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True, )31, là điểm nhập cho tất cả các hoạt động tham gia cơ sở dữ liệu tiêu chuẩn giữa pd.concat( objs, axis=0, join="outer", ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True, )00 hoặc được đặt tên là pd.concat( objs, axis=0, join="outer", ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True, )02 đối tượng: In [6]: result = pd.concat(frames, keys=["x", "y", "z"])2
Ghi chú Hỗ trợ chỉ định các mức chỉ mục là các tham số pd.concat( objs, axis=0, join="outer", ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True, )36, pd.concat( objs, axis=0, join="outer", ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True, )40 và pd.concat( objs, axis=0, join="outer", ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True, )41 đã được thêm vào phiên bản 0.23.0. Hỗ trợ hợp nhất các đối tượng pd.concat( objs, axis=0, join="outer", ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True, )02 đã được thêm vào phiên bản 0.24.0. Loại trả lại sẽ giống như pd.concat( objs, axis=0, join="outer", ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True, )34. Nếu pd.concat( objs, axis=0, join="outer", ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True, )34 là pd.concat( objs, axis=0, join="outer", ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True, )00 hoặc được đặt tên pd.concat( objs, axis=0, join="outer", ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True, )02 và pd.concat( objs, axis=0, join="outer", ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True, )35 là một lớp con của pd.concat( objs, axis=0, join="outer", ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True, )00, loại trả lại vẫn sẽ là pd.concat( objs, axis=0, join="outer", ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True, )00. pd.concat( objs, axis=0, join="outer", ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True, )80 là một chức năng trong không gian tên Pandas và nó cũng có sẵn dưới dạng phương thức phiên bản pd.concat( objs, axis=0, join="outer", ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True, )00 pd.concat( objs, axis=0, join="outer", ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True, )31, với cuộc gọi pd.concat( objs, axis=0, join="outer", ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True, )00 được coi là đối tượng bên trái trong tham gia. Phương thức pd.concat( objs, axis=0, join="outer", ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True, )84 liên quan, sử dụng nội bộ cho chỉ số chỉ mục (theo mặc định) và (s) -on-on-chỉ số tham gia. Nếu bạn chỉ tham gia vào chỉ mục, bạn có thể muốn sử dụng pd.concat( objs, axis=0, join="outer", ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True, )86 để tiết kiệm cho mình một số gõ. Sao mồi ngắn gọn về phương pháp hợp nhất (đại số quan hệ)#Người dùng có kinh nghiệm của các cơ sở dữ liệu quan hệ như SQL sẽ quen thuộc với thuật ngữ được sử dụng để mô tả các hoạt động tham gia giữa hai cấu trúc SQL Table như các cấu trúc ( pd.concat( objs, axis=0, join="outer", ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True, )00 đối tượng). Có một số trường hợp cần xem xét rất quan trọng để hiểu:
Ghi chú Hỗ trợ chỉ định các mức chỉ mục là các tham số pd.concat( objs, axis=0, join="outer", ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True, )36, pd.concat( objs, axis=0, join="outer", ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True, )40 và pd.concat( objs, axis=0, join="outer", ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True, )41 đã được thêm vào phiên bản 0.23.0. Hỗ trợ hợp nhất các đối tượng pd.concat( objs, axis=0, join="outer", ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True, )02 đã được thêm vào phiên bản 0.24.0.will be discarded. Loại trả lại sẽ giống như pd.concat( objs, axis=0, join="outer", ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True, )34. Nếu pd.concat( objs, axis=0, join="outer", ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True, )34 là pd.concat( objs, axis=0, join="outer", ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True, )00 hoặc được đặt tên pd.concat( objs, axis=0, join="outer", ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True, )02 và pd.concat( objs, axis=0, join="outer", ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True, )35 là một lớp con của pd.concat( objs, axis=0, join="outer", ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True, )00, loại trả lại vẫn sẽ là pd.concat( objs, axis=0, join="outer", ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True, )00.many-to-many join case. In SQL / standard relational algebra, if a key combination appears more than once in both tables, the resulting table will have the Cartesian product of the associated data. Here is a very basic example with one unique key combination: In [6]: result = pd.concat(frames, keys=["x", "y", "z"])3 pd.concat( objs, axis=0, join="outer", ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True, )80 là một chức năng trong không gian tên Pandas và nó cũng có sẵn dưới dạng phương thức phiên bản pd.concat( objs, axis=0, join="outer", ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True, )00 pd.concat( objs, axis=0, join="outer", ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True, )31, với cuộc gọi pd.concat( objs, axis=0, join="outer", ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True, )00 được coi là đối tượng bên trái trong tham gia. In [6]: result = pd.concat(frames, keys=["x", "y", "z"])4 Phương thức pd.concat( objs, axis=0, join="outer", ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True, )84 liên quan, sử dụng nội bộ cho chỉ số chỉ mục (theo mặc định) và (s) -on-on-chỉ số tham gia. Nếu bạn chỉ tham gia vào chỉ mục, bạn có thể muốn sử dụng pd.concat( objs, axis=0, join="outer", ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True, )86 để tiết kiệm cho mình một số gõ.does not appear in either the left or right tables, the values in the joined table will be pd.concat( objs, axis=0, join="outer", ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True, )96. Here is a summary of the pd.concat( objs, axis=0, join="outer", ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True, )46 options and their SQL equivalent names:
In [6]: result = pd.concat(frames, keys=["x", "y", "z"])5 In [6]: result = pd.concat(frames, keys=["x", "y", "z"])6 In [6]: result = pd.concat(frames, keys=["x", "y", "z"])7 In [6]: result = pd.concat(frames, keys=["x", "y", "z"])8 In [6]: result = pd.concat(frames, keys=["x", "y", "z"])9 Đối số pd.concat( objs, axis=0, join="outer", ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True, )46 cho pd.concat( objs, axis=0, join="outer", ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True, )80 Chỉ định cách xác định các khóa nào sẽ được đưa vào bảng kết quả. Nếu một kết hợp khóa không xuất hiện trong các bảng bên trái hoặc bên phải, các giá trị trong bảng được nối sẽ là pd.concat( objs, axis=0, join="outer", ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True, )96. Dưới đây là bản tóm tắt các tùy chọn pd.concat( objs, axis=0, join="outer", ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True, )46 và tên tương đương SQL của chúng: In [7]: result.loc["y"] Out[7]: A B C D 4 A4 B4 C4 D4 5 A5 B5 C5 D5 6 A6 B6 C6 D6 7 A7 B7 C7 D70 Phương pháp hợp nhất In [7]: result.loc["y"] Out[7]: A B C D 4 A4 B4 C4 D4 5 A5 B5 C5 D5 6 A6 B6 C6 D6 7 A7 B7 C7 D71 Tên tham gia SQL Sự mô tả Chỉ sử dụng các phím từ khung bên tráiChỉ sử dụng các phím từ khung bên phải Sử dụng liên minh các phím từ cả hai khung In [7]: result.loc["y"] Out[7]: A B C D 4 A4 B4 C4 D4 5 A5 B5 C5 D5 6 A6 B6 C6 D6 7 A7 B7 C7 D72 In [7]: result.loc["y"] Out[7]: A B C D 4 A4 B4 C4 D4 5 A5 B5 C5 D5 6 A6 B6 C6 D6 7 A7 B7 C7 D73 Nếu người dùng nhận thức được các bản sao ở bên phải pd.concat( objs, axis=0, join="outer", ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True, )00 nhưng muốn đảm bảo không có bản sao trong DataFrame bên trái, người ta có thể sử dụng đối số In [6]: result = pd.concat(frames, keys=["x", "y", "z"])14 thay thế, sẽ không nêu ra ngoại lệ. In [7]: result.loc["y"] Out[7]: A B C D 4 A4 B4 C4 D4 5 A5 B5 C5 D5 6 A6 B6 C6 D6 7 A7 B7 C7 D74 Chỉ báo hợp nhất#pd.concat( objs, axis=0, join="outer", ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True, )31 chấp nhận đối số pd.concat( objs, axis=0, join="outer", ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True, )60. Nếu pd.concat( objs, axis=0, join="outer", ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True, )43, một cột loại phân loại được gọi là pd.concat( objs, axis=0, join="outer", ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True, )61 sẽ được thêm vào đối tượng đầu ra có giá trị:
In [7]: result.loc["y"] Out[7]: A B C D 4 A4 B4 C4 D4 5 A5 B5 C5 D5 6 A6 B6 C6 D6 7 A7 B7 C7 D75 Đối số pd.concat( objs, axis=0, join="outer", ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True, )60 cũng sẽ chấp nhận các đối số chuỗi, trong trường hợp đó hàm chỉ báo sẽ sử dụng giá trị của chuỗi được truyền làm tên cho cột chỉ báo. In [7]: result.loc["y"] Out[7]: A B C D 4 A4 B4 C4 D4 5 A5 B5 C5 D5 6 A6 B6 C6 D6 7 A7 B7 C7 D76 Hợp nhất dtypes#Hợp nhất sẽ bảo tồn DTYPE của các phím tham gia. In [7]: result.loc["y"] Out[7]: A B C D 4 A4 B4 C4 D4 5 A5 B5 C5 D5 6 A6 B6 C6 D6 7 A7 B7 C7 D77 Chúng tôi có thể bảo tồn các phím tham gia: In [7]: result.loc["y"] Out[7]: A B C D 4 A4 B4 C4 D4 5 A5 B5 C5 D5 6 A6 B6 C6 D6 7 A7 B7 C7 D78 Tất nhiên nếu bạn có các giá trị bị thiếu được giới thiệu, thì DTYPE kết quả sẽ được Upcast. In [7]: result.loc["y"] Out[7]: A B C D 4 A4 B4 C4 D4 5 A5 B5 C5 D5 6 A6 B6 C6 D6 7 A7 B7 C7 D79 Hợp nhất sẽ bảo tồn In [6]: result = pd.concat(frames, keys=["x", "y", "z"])26 DTYPE của các vụ sáp nhập. Xem thêm phần về phân loại.categoricals. Khung bên trái. frames = [ process_your_file(f) for f in files ] result = pd.concat(frames)0 Khung phù hợp. frames = [ process_your_file(f) for f in files ] result = pd.concat(frames)1 Kết quả được hợp nhất: frames = [ process_your_file(f) for f in files ] result = pd.concat(frames)2 Ghi chú Các DTYPE danh mục phải hoàn toàn giống nhau, có nghĩa là cùng một loại và thuộc tính được đặt hàng. Nếu không, kết quả sẽ ép buộc các danh mục DTYPE. Ghi chú Các DTYPE danh mục phải hoàn toàn giống nhau, có nghĩa là cùng một loại và thuộc tính được đặt hàng. Nếu không, kết quả sẽ ép buộc các danh mục DTYPE. Hợp nhất trên In [6]: result = pd.concat(frames, keys=["x", "y", "z"]) 26 DTYPE giống nhau có thể khá hiệu quả so với việc hợp nhất In [6]: result = pd.concat(frames, keys=["x", "y", "z"]) 28 DTYPE.Tham gia trên Index# frames = [ process_your_file(f) for f in files ] result = pd.concat(frames)3 frames = [ process_your_file(f) for f in files ] result = pd.concat(frames)4 In [6]: result = pd.concat(frames, keys=["x", "y", "z"])29 là một phương pháp thuận tiện để kết hợp các cột của hai chỉ số có khả năng khác nhau In [6]: result = pd.concat(frames, keys=["x", "y", "z"])30 thành một kết quả duy nhất pd.concat( objs, axis=0, join="outer", ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True, )00. Đây là một ví dụ rất cơ bản: frames = [ process_your_file(f) for f in files ] result = pd.concat(frames)5 Giống như trên, nhưng với pd.concat( objs, axis=0, join="outer", ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True, )93. frames = [ process_your_file(f) for f in files ] result = pd.concat(frames)6 frames = [ process_your_file(f) for f in files ] result = pd.concat(frames)7 Sự liên kết dữ liệu ở đây là trên các chỉ mục (nhãn hàng). Hành vi tương tự này có thể đạt được bằng cách sử dụng pd.concat( objs, axis=0, join="outer", ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True, ) 80 cộng với các đối số bổ sung hướng dẫn nó sử dụng các chỉ mục:Tham gia các cột khóa trên một chỉ mục# frames = [ process_your_file(f) for f in files ] result = pd.concat(frames)8 pd.concat( objs, axis=0, join="outer", ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True, )84 có một đối số pd.concat( objs, axis=0, join="outer", ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True, )36 tùy chọn có thể là một cột hoặc nhiều tên cột, trong đó chỉ định rằng pd.concat( objs, axis=0, join="outer", ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True, )00 đã vượt qua sẽ được căn chỉnh trên cột đó trong pd.concat( objs, axis=0, join="outer", ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True, )00. Hai cuộc gọi chức năng này hoàn toàn tương đương: frames = [ process_your_file(f) for f in files ] result = pd.concat(frames)9 In [8]: df4 = pd.DataFrame( ...: { ...: "B": ["B2", "B3", "B6", "B7"], ...: "D": ["D2", "D3", "D6", "D7"], ...: "F": ["F2", "F3", "F6", "F7"], ...: }, ...: index=[2, 3, 6, 7], ...: ) ...: In [9]: result = pd.concat([df1, df4], axis=1)0 Rõ ràng bạn có thể chọn bất kỳ hình thức nào bạn thấy thuận tiện hơn. Đối với các lần tham gia nhiều-một (trong đó một trong số ____ 100 đã được lập chỉ mục bởi khóa tham gia), sử dụng In [12]: pd.concat([df1, df4.reindex(df1.index)], axis=1) Out[12]: A B C D B D F 0 A0 B0 C0 D0 NaN NaN NaN 1 A1 B1 C1 D1 NaN NaN NaN 2 A2 B2 C2 D2 B2 D2 F2 3 A3 B3 C3 D3 B3 D3 F35 có thể thuận tiện hơn. Đây là một ví dụ đơn giản: In [8]: df4 = pd.DataFrame( ...: { ...: "B": ["B2", "B3", "B6", "B7"], ...: "D": ["D2", "D3", "D6", "D7"], ...: "F": ["F2", "F3", "F6", "F7"], ...: }, ...: index=[2, 3, 6, 7], ...: ) ...: In [9]: result = pd.concat([df1, df4], axis=1)1 Để tham gia vào nhiều khóa, DataFrame được truyền phải có In [13]: result = pd.concat([df1, df4], ignore_index=True, sort=False)5: In [8]: df4 = pd.DataFrame( ...: { ...: "B": ["B2", "B3", "B6", "B7"], ...: "D": ["D2", "D3", "D6", "D7"], ...: "F": ["F2", "F3", "F6", "F7"], ...: }, ...: index=[2, 3, 6, 7], ...: ) ...: In [9]: result = pd.concat([df1, df4], axis=1)2 Bây giờ điều này có thể được nối bằng cách truyền hai tên cột chính: In [8]: df4 = pd.DataFrame( ...: { ...: "B": ["B2", "B3", "B6", "B7"], ...: "D": ["D2", "D3", "D6", "D7"], ...: "F": ["F2", "F3", "F6", "F7"], ...: }, ...: index=[2, 3, 6, 7], ...: ) ...: In [9]: result = pd.concat([df1, df4], axis=1)3 Mặc định cho pd.concat( objs, axis=0, join="outer", ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True, )86 là thực hiện tham gia bên trái (về cơ bản là hoạt động của VLookup, cho người dùng Excel), chỉ sử dụng các khóa được tìm thấy trong DataFrame gọi. Ví dụ, các loại tham gia khác, có thể dễ dàng thực hiện: Như bạn có thể thấy, điều này làm giảm bất kỳ hàng nào không có trận đấu.Tham gia một chỉ mục duy nhất vào Multiindex# In [8]: df4 = pd.DataFrame( ...: { ...: "B": ["B2", "B3", "B6", "B7"], ...: "D": ["D2", "D3", "D6", "D7"], ...: "F": ["F2", "F3", "F6", "F7"], ...: }, ...: index=[2, 3, 6, 7], ...: ) ...: In [9]: result = pd.concat([df1, df4], axis=1)4 Bạn có thể tham gia một pd.concat( objs, axis=0, join="outer", ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True, )00 chỉ số đơn với mức độ đa dạng pd.concat( objs, axis=0, join="outer", ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True, )00. Cấp độ sẽ khớp với tên của chỉ mục của khung hình đơn lẻ so với tên cấp độ của khung đa dạng. In [8]: df4 = pd.DataFrame( ...: { ...: "B": ["B2", "B3", "B6", "B7"], ...: "D": ["D2", "D3", "D6", "D7"], ...: "F": ["F2", "F3", "F6", "F7"], ...: }, ...: index=[2, 3, 6, 7], ...: ) ...: In [9]: result = pd.concat([df1, df4], axis=1)5 Điều này tương đương nhưng ít dài dòng hơn và tiết kiệm bộ nhớ / nhanh hơn thế này.Tham gia với hai đa dạng# In [8]: df4 = pd.DataFrame( ...: { ...: "B": ["B2", "B3", "B6", "B7"], ...: "D": ["D2", "D3", "D6", "D7"], ...: "F": ["F2", "F3", "F6", "F7"], ...: }, ...: index=[2, 3, 6, 7], ...: ) ...: In [9]: result = pd.concat([df1, df4], axis=1)6 Điều này được hỗ trợ theo cách hạn chế, với điều kiện là chỉ mục cho đối số bên phải được sử dụng hoàn toàn trong tham gia và là một tập hợp con của các chỉ số trong đối số bên trái, như trong ví dụ này: In [8]: df4 = pd.DataFrame( ...: { ...: "B": ["B2", "B3", "B6", "B7"], ...: "D": ["D2", "D3", "D6", "D7"], ...: "F": ["F2", "F3", "F6", "F7"], ...: }, ...: index=[2, 3, 6, 7], ...: ) ...: In [9]: result = pd.concat([df1, df4], axis=1)7 Nếu điều kiện đó không được thỏa mãn, có thể thực hiện một lần tham gia với hai chỉ số đa chỉ số bằng mã sau.Hợp nhất trên kết hợp các cột và cấp chỉ mục# In [8]: df4 = pd.DataFrame( ...: { ...: "B": ["B2", "B3", "B6", "B7"], ...: "D": ["D2", "D3", "D6", "D7"], ...: "F": ["F2", "F3", "F6", "F7"], ...: }, ...: index=[2, 3, 6, 7], ...: ) ...: In [9]: result = pd.concat([df1, df4], axis=1)8 Ghi chú Các DTYPE danh mục phải hoàn toàn giống nhau, có nghĩa là cùng một loại và thuộc tính được đặt hàng. Nếu không, kết quả sẽ ép buộc các danh mục DTYPE. Ghi chú Các DTYPE danh mục phải hoàn toàn giống nhau, có nghĩa là cùng một loại và thuộc tính được đặt hàng. Nếu không, kết quả sẽ ép buộc các danh mục DTYPE. Ghi chú Các DTYPE danh mục phải hoàn toàn giống nhau, có nghĩa là cùng một loại và thuộc tính được đặt hàng. Nếu không, kết quả sẽ ép buộc các danh mục DTYPE. Các cột giá trị chồng chéo#Đối số hợp nhất pd.concat( objs, axis=0, join="outer", ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True, )56 có một danh sách các chuỗi để nối các tên cột chồng chéo trong đầu vào pd.concat( objs, axis=0, join="outer", ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True, )00S để định hướng các cột kết quả: In [8]: df4 = pd.DataFrame( ...: { ...: "B": ["B2", "B3", "B6", "B7"], ...: "D": ["D2", "D3", "D6", "D7"], ...: "F": ["F2", "F3", "F6", "F7"], ...: }, ...: index=[2, 3, 6, 7], ...: ) ...: In [9]: result = pd.concat([df1, df4], axis=1)9
In [10]: result = pd.concat([df1, df4], axis=1, join="inner")0 In [6]: result = pd.concat(frames, keys=["x", "y", "z"])29 có In [6]: result = pd.concat(frames, keys=["x", "y", "z"])53 và In [6]: result = pd.concat(frames, keys=["x", "y", "z"])54 đối số hoạt động tương tự. In [10]: result = pd.concat([df1, df4], axis=1, join="inner")1 Tham gia nhiều DataFrames#Một danh sách hoặc bộ tuple của In [6]: result = pd.concat(frames, keys=["x", "y", "z"])30 cũng có thể được chuyển đến pd.concat( objs, axis=0, join="outer", ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True, )84 để tham gia cùng nhau trên các chỉ mục của chúng. In [10]: result = pd.concat([df1, df4], axis=1, join="inner")2 Hợp nhất các giá trị với nhau trong các cột Data hoặc DataFrame#Một tình huống khá phổ biến khác là có hai đối tượng có chỉ số tương tự (hoặc được lập chỉ mục tương tự) pd.concat( objs, axis=0, join="outer", ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True, )02 hoặc pd.concat( objs, axis=0, join="outer", ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True, )00 và muốn các giá trị vá lỗi của bản vá trong một đối tượng từ các giá trị để phù hợp với các chỉ số phù hợp với nhau. Đây là một ví dụ: In [10]: result = pd.concat([df1, df4], axis=1, join="inner")3 Đối với điều này, hãy sử dụng phương pháp In [6]: result = pd.concat(frames, keys=["x", "y", "z"])59: In [10]: result = pd.concat([df1, df4], axis=1, join="inner")4 Lưu ý rằng phương pháp này chỉ lấy các giá trị từ bên phải pd.concat( objs, axis=0, join="outer", ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True, )00 nếu chúng bị thiếu ở bên trái pd.concat( objs, axis=0, join="outer", ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True, )00. Một phương pháp liên quan, In [6]: result = pd.concat(frames, keys=["x", "y", "z"])62, thay đổi các giá trị không NA tại chỗ: In [10]: result = pd.concat([df1, df4], axis=1, join="inner")5 Thời gian hợp nhất thân thiện#Hợp nhất dữ liệu đã đặt hàng#Hàm In [6]: result = pd.concat(frames, keys=["x", "y", "z"])63 cho phép kết hợp chuỗi thời gian và dữ liệu được đặt hàng khác. Cụ thể, nó có từ khóa In [6]: result = pd.concat(frames, keys=["x", "y", "z"])64 tùy chọn để điền/nội suy dữ liệu bị thiếu: In [10]: result = pd.concat([df1, df4], axis=1, join="inner")6 Hợp nhất ASOF#Một In [6]: result = pd.concat(frames, keys=["x", "y", "z"])65 tương tự như một tham số bên trái được đặt hàng ngoại trừ việc chúng tôi khớp với khóa gần nhất thay vì các phím bằng nhau. Đối với mỗi hàng trong pd.concat( objs, axis=0, join="outer", ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True, )34 pd.concat( objs, axis=0, join="outer", ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True, )00, chúng tôi chọn hàng cuối cùng trong pd.concat( objs, axis=0, join="outer", ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True, )35 pd.concat( objs, axis=0, join="outer", ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True, )00 có khóa pd.concat( objs, axis=0, join="outer", ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True, )36 nhỏ hơn phím bên trái. Cả hai khung dữ liệu phải được sắp xếp theo khóa. Tùy chọn hợp nhất ASOF có thể thực hiện hợp nhất nhóm khôn ngoan. Điều này phù hợp với khóa In [6]: result = pd.concat(frames, keys=["x", "y", "z"])71 như nhau, ngoài trận đấu gần nhất trên khóa pd.concat( objs, axis=0, join="outer", ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True, )36. Ví dụ; Chúng tôi có thể có In [6]: result = pd.concat(frames, keys=["x", "y", "z"])73 và In [6]: result = pd.concat(frames, keys=["x", "y", "z"])74 và chúng tôi muốn In [6]: result = pd.concat(frames, keys=["x", "y", "z"])75 hợp nhất chúng. In [10]: result = pd.concat([df1, df4], axis=1, join="inner")7 In [10]: result = pd.concat([df1, df4], axis=1, join="inner")8 Theo mặc định, chúng tôi đang lấy ASOF của các trích dẫn. In [10]: result = pd.concat([df1, df4], axis=1, join="inner")9 Chúng tôi chỉ có ASOF trong In [6]: result = pd.concat(frames, keys=["x", "y", "z"])76 giữa thời gian báo giá và thời gian giao dịch. In [11]: result = pd.concat([df1, df4], axis=1).reindex(df1.index)0 Chúng tôi chỉ ASOF trong In [6]: result = pd.concat(frames, keys=["x", "y", "z"])77 giữa thời gian báo giá và thời gian giao dịch và chúng tôi loại trừ các trận đấu chính xác đúng hạn. Lưu ý rằng mặc dù chúng tôi loại trừ các trận đấu chính xác (của các trích dẫn), các trích dẫn trước đó được truyền đến thời điểm đó.do propagate to that point in time. In [11]: result = pd.concat([df1, df4], axis=1).reindex(df1.index)1 So sánh các đối tượng#Các phương pháp In [6]: result = pd.concat(frames, keys=["x", "y", "z"])78 và In [6]: result = pd.concat(frames, keys=["x", "y", "z"])78 cho phép bạn so sánh hai DataFrame hoặc chuỗi, và tóm tắt sự khác biệt của chúng. Tính năng này đã được thêm vào trong v1.1.0.V1.1.0. Ví dụ: bạn có thể muốn so sánh hai pd.concat( objs, axis=0, join="outer", ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True, )00 và xếp chồng sự khác biệt của chúng cạnh nhau. In [11]: result = pd.concat([df1, df4], axis=1).reindex(df1.index)2 In [11]: result = pd.concat([df1, df4], axis=1).reindex(df1.index)3 In [11]: result = pd.concat([df1, df4], axis=1).reindex(df1.index)4 Theo mặc định, nếu hai giá trị tương ứng bằng nhau, chúng sẽ được hiển thị là In [6]: result = pd.concat(frames, keys=["x", "y", "z"])81. Hơn nữa, nếu tất cả các giá trị trong toàn bộ hàng / cột, hàng / cột sẽ bị bỏ qua từ kết quả. Sự khác biệt còn lại sẽ được căn chỉnh trên các cột. Nếu bạn muốn, bạn có thể chọn xếp chồng sự khác biệt trên các hàng. In [11]: result = pd.concat([df1, df4], axis=1).reindex(df1.index)5 Nếu bạn muốn giữ tất cả các hàng và cột gốc, hãy đặt đối số In [6]: result = pd.concat(frames, keys=["x", "y", "z"])82 thành pd.concat( objs, axis=0, join="outer", ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True, )43. In [11]: result = pd.concat([df1, df4], axis=1).reindex(df1.index)6 Bạn cũng có thể giữ tất cả các giá trị ban đầu ngay cả khi chúng bằng nhau. In [11]: result = pd.concat([df1, df4], axis=1).reindex(df1.index)7 |