Hướng dẫn how do i concatenate two dataframe columns in python? - làm cách nào để nối hai cột khung dữ liệu trong python?

Bộ dữ liệu nhỏ (

[''.join(i) for i in zip(df["Year"].map(str),df["quarter"])]

hoặc chậm hơn một chút nhưng nhỏ gọn hơn:

Show
df.Year.str.cat(df.quarter)

Các bộ dữ liệu lớn hơn (> 150Rows)

df['Year'].astype(str) + df['quarter']

CẬP NHẬT: Thời gian biểu đồ Pandas 0.23.4 Timing graph Pandas 0.23.4

Hướng dẫn how do i concatenate two dataframe columns in python? - làm cách nào để nối hai cột khung dữ liệu trong python?

Hãy thử nghiệm nó trên 200k Rows DF:

In [250]: df
Out[250]:
   Year quarter
0  2014      q1
1  2015      q2

In [251]: df = pd.concat([df] * 10**5)

In [252]: df.shape
Out[252]: (200000, 2)

CẬP NHẬT: Thời gian mới sử dụng Pandas 0.19.0 new timings using Pandas 0.19.0

Thời gian mà không tối ưu hóa CPU/GPU (được sắp xếp từ nhanh nhất đến chậm nhất): without CPU/GPU optimization (sorted from fastest to slowest):

In [107]: %timeit df['Year'].astype(str) + df['quarter']
10 loops, best of 3: 131 ms per loop

In [106]: %timeit df['Year'].map(str) + df['quarter']
10 loops, best of 3: 161 ms per loop

In [108]: %timeit df.Year.str.cat(df.quarter)
10 loops, best of 3: 189 ms per loop

In [109]: %timeit df.loc[:, ['Year','quarter']].astype(str).sum(axis=1)
1 loop, best of 3: 567 ms per loop

In [110]: %timeit df[['Year','quarter']].astype(str).sum(axis=1)
1 loop, best of 3: 584 ms per loop

In [111]: %timeit df[['Year','quarter']].apply(lambda x : '{}{}'.format(x[0],x[1]), axis=1)
1 loop, best of 3: 24.7 s per loop

Thời gian bằng cách sử dụng tối ưu hóa CPU/GPU: using CPU/GPU optimization:

In [113]: %timeit df['Year'].astype(str) + df['quarter']
10 loops, best of 3: 53.3 ms per loop

In [114]: %timeit df['Year'].map(str) + df['quarter']
10 loops, best of 3: 65.5 ms per loop

In [115]: %timeit df.Year.str.cat(df.quarter)
10 loops, best of 3: 79.9 ms per loop

In [116]: %timeit df.loc[:, ['Year','quarter']].astype(str).sum(axis=1)
1 loop, best of 3: 230 ms per loop

In [117]: %timeit df[['Year','quarter']].astype(str).sum(axis=1)
1 loop, best of 3: 230 ms per loop

In [118]: %timeit df[['Year','quarter']].apply(lambda x : '{}{}'.format(x[0],x[1]), axis=1)
1 loop, best of 3: 9.38 s per loop

Trả lời đóng góp của @Anton-VBR

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.

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 [6]: result = pd.concat(frames, keys=["x", "y", "z"])
4 (trong không gian tên gấu trúc chính) 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 [6]: result = pd.concat(frames, keys=["x", "y", "z"])
5 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)

Hướng dẫn how do i concatenate two dataframe columns in python? - làm cách nào để nối hai cột khung dữ liệu trong python?

Giống như chức năng anh chị em của nó trên ndarrays,

In [6]: result = pd.concat(frames, keys=["x", "y", "z"])
6,
In [6]: result = pd.concat(frames, keys=["x", "y", "z"])
7 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,
)

  • In [6]: result = pd.concat(frames, keys=["x", "y", "z"])
    
    8: Một chuỗi hoặc ánh xạ các đối tượng Data hoặc DataFrame. Nếu một dict được thông qua, các khóa được sắp xếp sẽ được sử dụng làm đối số
    In [6]: result = pd.concat(frames, keys=["x", "y", "z"])
    
    9, trừ khi nó được thông qua, trong trường hợp đó, các giá trị sẽ được chọn (xem bên dưới). Bất kỳ đối tượng nào sẽ được thả một cách âm thầm trừ khi tất cả chúng không có gì trong trường hợp đó sẽ được nâng lên.

  • 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
    
    0: {0, 1, Mạnh}, mặc định 0. Trục để nối.

  • 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
    
    1: {‘bên trong,‘ bên ngoài}, mặc định ‘bên ngoài. Cách xử lý các chỉ mục trên trục khác (ES). Bên ngoài cho công đoàn và bên trong cho giao 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  D7
    
    2: Boolean, mặc định sai. Nếu đúng, không sử dụng các giá trị chỉ mục trên trục nối. Trục kết quả sẽ được dán nhãn 0,, N - 1. Điều này rất hữu ích nếu bạn đang ghép các đối tượng trong đó trục nối không có thông tin lập chỉ mục có ý nghĩa. Lưu ý các giá trị chỉ mục trên các trục khác vẫn được tôn trọng trong tham gia.

  • In [6]: result = pd.concat(frames, keys=["x", "y", "z"])
    
    9: Trình tự, mặc định không có. Xây dựng chỉ số phân cấp bằng cách sử dụng các phím được truyền làm mức ngoài cùng. Nếu nhiều cấp độ trôi qua, nên chứa bộ dữ liệu.

  • 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
    
    4: Danh sách các chuỗi, mặc định không có. Các mức cụ thể (giá trị duy nhất) để sử dụng để xây dựng đa dạng. Nếu không, chúng sẽ được suy ra từ các chìa khóa.

  • 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
    
    5: Danh sách, mặc định không có. Tên cho các cấp độ trong chỉ số phân cấp kết quả.

  • 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
    
    6: Boolean, mặc định sai. Kiểm tra xem trục được nối mới có chứa các bản sao hay không. Điều này có thể rất tốn kém so với cách ghép dữ liệu thực 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  D7
    
    7: Boolean, mặc định đúng. Nếu sai, không sao chép dữ liệu một cách không cần thiết.

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 [6]: result = pd.concat(frames, keys=["x", "y", "z"])
9:

In [6]: result = pd.concat(frames, keys=["x", "y", "z"])

Hướng dẫn how do i concatenate two dataframe columns in python? - làm cách nào để nối hai cột khung dữ liệu trong python?

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 [6]: result = pd.concat(frames, keys=["x", "y", "z"])
4 (và do đó
df.Year.str.cat(df.quarter)
00) 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.

df.Year.str.cat(df.quarter)
0

Ghi chú

Điều đáng chú ý là

In [6]: result = pd.concat(frames, keys=["x", "y", "z"])
4 (và do đó
df.Year.str.cat(df.quarter)
00) 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 df.Year.str.cat(df.quarter) 01, 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#

  • Khi dán nhiều khung dữ liệu, bạn có thể lựa chọn cách xử lý các trục khác (trừ cái được nối). Điều này có thể được thực hiện theo hai cách sau:

  • Lấy sự kết hợp của tất cả,

    df.Year.str.cat(df.quarter)
    
    02. Đây là tùy chọn mặc định vì nó dẫn đến mất thông tin bằng không.

Lấy giao lộ,

df.Year.str.cat(df.quarter)
03.

df.Year.str.cat(df.quarter)
1

Hướng dẫn how do i concatenate two dataframe columns in python? - làm cách nào để nối hai cột khung dữ liệu trong python?

Dưới đây là một ví dụ về từng phương pháp này. Đầu tiên, hành vi

df.Year.str.cat(df.quarter)
02 mặc định:

df.Year.str.cat(df.quarter)
2

Hướng dẫn how do i concatenate two dataframe columns in python? - làm cách nào để nối hai cột khung dữ liệu trong python?

Đây là điều tương tự với

df.Year.str.cat(df.quarter)
03:

df.Year.str.cat(df.quarter)
3

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:

df.Year.str.cat(df.quarter)
4

Hướng dẫn how do i concatenate two dataframe columns in python? - làm cách nào để nối hai cột khung dữ liệu trong python?

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#

df.Year.str.cat(df.quarter)
5

Hướng dẫn how do i concatenate two dataframe columns in python? - làm cách nào để nối hai cột khung dữ liệu trong python?

Đối với các đối tượng df.Year.str.cat(df.quarter) 06 mà don lồng có một chỉ mục có ý nghĩa, bạn có thể muốn nối chúng và bỏ qua thực tế là chúng có thể có các chỉ mục chồng chéo. Để làm điều này, hãy sử dụng đối số 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 2:

Kết hợp với các ndims hỗn hợp#

df.Year.str.cat(df.quarter)
6

Hướng dẫn how do i concatenate two dataframe columns in python? - làm cách nào để nối hai cột khung dữ liệu trong python?

Ghi chú

Điều đáng chú ý là

In [6]: result = pd.concat(frames, keys=["x", "y", "z"])
4 (và do đó
df.Year.str.cat(df.quarter)
00) 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

df.Year.str.cat(df.quarter)
01, nhưng logic được áp dụng riêng biệt trên cơ sở theo cấp độ.

df.Year.str.cat(df.quarter)
7

Hướng dẫn how do i concatenate two dataframe columns in python? - làm cách nào để nối hai cột khung dữ liệu trong python?

Đặt logic trên các trục khác#

df.Year.str.cat(df.quarter)
8

Hướng dẫn how do i concatenate two dataframe columns in python? - làm cách nào để nối hai cột khung dữ liệu trong python?

Khi dán nhiều khung dữ liệu, bạn có thể lựa chọn cách xử lý các trục khác (trừ cái được nối). Điều này có thể được thực hiện theo hai cách sau:

Lấy sự kết hợp của tất cả,

df.Year.str.cat(df.quarter)
02. Đây là tùy chọn mặc định vì nó dẫn đến mất thông tin bằng không.

df.Year.str.cat(df.quarter)
9

Lấy giao lộ,

df.Year.str.cat(df.quarter)
03.

df['Year'].astype(str) + df['quarter']
0

Dưới đây là một ví dụ về từng phương pháp này. Đầu tiên, hành vi

df.Year.str.cat(df.quarter)
02 mặc định:

df['Year'].astype(str) + df['quarter']
1

Hướng dẫn how do i concatenate two dataframe columns in python? - làm cách nào để nối hai cột khung dữ liệu trong python?

Đây là điều tương tự với

df.Year.str.cat(df.quarter)
03:

df['Year'].astype(str) + df['quarter']
2

Hướng dẫn how do i concatenate two dataframe columns in python? - làm cách nào để nối hai cột khung dữ liệu trong python?

df['Year'].astype(str) + df['quarter']
3

Hướng dẫn how do i concatenate two dataframe columns in python? - làm cách nào để nối hai cột khung dữ liệu trong python?

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:

df['Year'].astype(str) + df['quarter']
4

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 [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
4:

df['Year'].astype(str) + df['quarter']
5

Hướng dẫn how do i concatenate two dataframe columns in python? - làm cách nào để nối hai cột khung dữ liệu trong python?

df['Year'].astype(str) + df['quarter']
6

Đ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

df.Year.str.cat(df.quarter)
06, bạn có thể chuyển đổi hàng thành
df.Year.str.cat(df.quarter)
06 và sử dụng
In [6]: result = pd.concat(frames, keys=["x", "y", "z"])
5

df['Year'].astype(str) + df['quarter']
7

Hướng dẫn how do i concatenate two dataframe columns in python? - làm cách nào để nối hai cột khung dữ liệu trong python?

Bạn nên sử dụ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  D7
2 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ư

df.Year.str.cat(df.quarter)
35 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
df.Year.str.cat(df.quarter)
06.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
df.Year.str.cat(df.quarter)
35 in R). The reason for this is careful algorithmic design and the internal layout of the data in
df.Year.str.cat(df.quarter)
06.

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,

df.Year.str.cat(df.quarter)
37, 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 các đối tượng
df.Year.str.cat(df.quarter)
06 hoặc được đặt tên

df['Year'].astype(str) + df['quarter']
8

  • df.Year.str.cat(df.quarter)
    
    40: Đối tượng DataFrame hoặc được đặt tên là đối tượng.

  • df.Year.str.cat(df.quarter)
    
    41: Một đối tượng DataFrame hoặc được đặt tên khác.

  • df.Year.str.cat(df.quarter)
    
    42: Tên cấp độ hoặc chỉ mục để tham gia. Phải được tìm thấy trong cả đối tượng DataFrame và/hoặc Series bên trái. Nếu không được thông qua và
    df.Year.str.cat(df.quarter)
    
    43 và
    df.Year.str.cat(df.quarter)
    
    44 là
    df.Year.str.cat(df.quarter)
    
    45, giao điểm của các cột trong các khung dữ liệu và/hoặc chuỗi sẽ được suy ra là các phím tham gia.

  • df.Year.str.cat(df.quarter)
    
    46: Cột hoặc cấp chỉ mục từ DataFrame hoặc Sê -ri bên trái để sử dụng làm khóa. Có thể là tên cột, tên cấp chỉ mục hoặc mảng có độ dài bằng độ dài của DataFrame hoặc Sê -ri.

  • df.Year.str.cat(df.quarter)
    
    47: Cột hoặc cấp chỉ mục từ DataFrame hoặc Sê -ri bên phải để sử dụng làm khóa. Có thể là tên cột, tên cấp chỉ mục hoặc mảng có độ dài bằng độ dài của DataFrame hoặc Sê -ri.

  • df.Year.str.cat(df.quarter)
    
    43: Nếu
    df.Year.str.cat(df.quarter)
    
    49, hãy sử dụng chỉ mục (nhãn hàng) từ DataFrame bên trái hoặc chuỗi làm khóa nối của nó. Trong trường hợp của DataFrame hoặc Sê -ri có đa dạng (phân cấp), số lượng cấp độ phải khớp với số khóa tham gia từ DataFrame hoặc Sê -ri bên phải.

  • df.Year.str.cat(df.quarter)
    
    44: sử dụng tương tự như
    df.Year.str.cat(df.quarter)
    
    43 cho đúng dữ liệu hoặc loạt

  • df.Year.str.cat(df.quarter)
    
    52: Một trong số
    df.Year.str.cat(df.quarter)
    
    53,
    df.Year.str.cat(df.quarter)
    
    54,
    df.Year.str.cat(df.quarter)
    
    55,
    df.Year.str.cat(df.quarter)
    
    56,
    df.Year.str.cat(df.quarter)
    
    57. Mặc định là
    df.Year.str.cat(df.quarter)
    
    58. Xem bên dưới để biết mô tả chi tiết hơn về từng phương pháp.

  • df.Year.str.cat(df.quarter)
    
    59: Sắp xếp kết quả DataFrame theo các khóa tham gia theo thứ tự từ vựng. Mặc định là
    df.Year.str.cat(df.quarter)
    
    49, cài đặt thành
    df.Year.str.cat(df.quarter)
    
    45 sẽ cải thiện hiệu suất đáng kể trong nhiều trường hợp.

  • df.Year.str.cat(df.quarter)
    
    62: Một bộ hậu tố chuỗi để áp dụng cho các cột chồng chéo. Mặc định là
    df.Year.str.cat(df.quarter)
    
    63.

  • 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
    
    7: Luôn sao chép dữ liệu (mặc định
    df.Year.str.cat(df.quarter)
    
    49) từ các đối tượng DataFrame được truyền hoặc các đối tượng được đặt tên, ngay cả khi không cần thiết phải tái lập. Không thể tránh được trong nhiều trường hợp nhưng có thể cải thiện việc sử dụng hiệu suất / bộ nhớ. Các trường hợp sao chép có thể tránh được có phần bệnh lý nhưng tùy chọn này dù sao cũng được cung cấp.

  • df.Year.str.cat(df.quarter)
    
    66: Thêm một cột vào DataFrame đầu ra được gọi là
    df.Year.str.cat(df.quarter)
    
    67 với thông tin về nguồn của mỗi hàng.
    df.Year.str.cat(df.quarter)
    
    67 là loại phân loại và nhận được giá trị
    df.Year.str.cat(df.quarter)
    
    69 cho các quan sát có khóa hợp nhất chỉ xuất hiện trong
    df.Year.str.cat(df.quarter)
    
    53 DataFrame hoặc Sê-ri,
    df.Year.str.cat(df.quarter)
    
    71 cho các quan sát có khóa hợp nhất chỉ xuất hiện trong
    df.Year.str.cat(df.quarter)
    
    54 DataFrame hoặc
    df.Year.str.cat(df.quarter)
    
    73 .

  • df.Year.str.cat(df.quarter)
    
    74: Chuỗi, mặc định Không có. Nếu được chỉ định, kiểm tra nếu Merge thuộc loại được chỉ định.

    • Một lần nữa, một trong hai bộ dữ liệu bên trái và bên phải.

    • Một lần nữa, One One_To_Many, hoặc 1: M ': Kiểm tra xem các phím hợp nhất có phải là duy nhất trong bộ dữ liệu bên trái không.

    • Càng nhiều_to_one, hoặc M M: 1: Kiểm tra xem các phím hợp nhất có phải là duy nhất trong bộ dữ liệu bên phải không.

    • Càng nhiều_to_many, hoặc M M: Mùi: được phép, nhưng không dẫn đến séc.

Ghi chú

Hỗ trợ chỉ định các mức chỉ mục là các tham số

df.Year.str.cat(df.quarter)
42,
df.Year.str.cat(df.quarter)
46 và
df.Year.str.cat(df.quarter)
47 đã được thêm vào phiên bản 0.23.0. Hỗ trợ hợp nhất các đối tượng
df.Year.str.cat(df.quarter)
08 đã được thêm vào phiên bản 0.24.0.

Loại trả lại sẽ giống như

df.Year.str.cat(df.quarter)
40. Nếu
df.Year.str.cat(df.quarter)
40 là
df.Year.str.cat(df.quarter)
06 hoặc được đặt tên
df.Year.str.cat(df.quarter)
08 và
df.Year.str.cat(df.quarter)
41 là một lớp con của
df.Year.str.cat(df.quarter)
06, loại trả lại vẫn sẽ là
df.Year.str.cat(df.quarter)
06.

df.Year.str.cat(df.quarter)
86 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 ví dụ
df.Year.str.cat(df.quarter)
06
df.Year.str.cat(df.quarter)
37, với cuộc gọi
df.Year.str.cat(df.quarter)
06 được coi là đối tượng bên trái trong tham gia.

Phương thức

df.Year.str.cat(df.quarter)
90 liên quan, sử dụng
df.Year.str.cat(df.quarter)
86 trong nội bộ cho chỉ số chỉ mục (theo mặc định) và (các) chỉ số -on-chỉ số -on. Nếu bạn chỉ tham gia vào chỉ mục, bạn có thể muốn sử dụng
df.Year.str.cat(df.quarter)
92 để 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 (

df.Year.str.cat(df.quarter)
06). Có một số trường hợp cần xem xét rất quan trọng để hiểu:

  • Tham gia một-một: Ví dụ: khi tham gia hai đối tượng

    df.Year.str.cat(df.quarter)
    
    06 trên các chỉ mục của chúng (phải chứa các giá trị duy nhất). joins: for example when joining two
    df.Year.str.cat(df.quarter)
    
    06 objects on their indexes (which must contain unique values).

  • Tham gia nhiều-một: Ví dụ: khi tham gia một chỉ mục (duy nhất) với một hoặc nhiều cột trong một

    df.Year.str.cat(df.quarter)
    
    06 khác. joins: for example when joining an index (unique) to one or more columns in a different
    df.Year.str.cat(df.quarter)
    
    06.

  • Nhiều người tham gia: tham gia các cột trên các cột. joins: joining columns on columns.

Ghi chú

Khi tham gia các cột trên các cột (có khả năng tham gia nhiều-nhiều), bất kỳ chỉ mục nào trên các đối tượng

df.Year.str.cat(df.quarter)
06 đã được loại bỏ sẽ bị loại bỏ.will be discarded.

Điều đáng để dành một chút thời gian để hiểu kết quả của vụ án tham gia nhiều-nhiều. Trong đại số quan hệ SQL / tiêu chuẩn, nếu một sự kết hợp chính xuất hiện nhiều lần trong cả hai bảng, bảng kết quả sẽ có sản phẩm Cartesian của dữ liệu liên quan. Dưới đây là một ví dụ rất cơ bản với một kết hợp khóa duy nhất: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:

df['Year'].astype(str) + df['quarter']
9

Hướng dẫn how do i concatenate two dataframe columns in python? - làm cách nào để nối hai cột khung dữ liệu trong python?

Dưới đây là một ví dụ phức tạp hơn với nhiều khóa tham gia. Chỉ có các khóa xuất hiện trong

df.Year.str.cat(df.quarter)
40 và
df.Year.str.cat(df.quarter)
41 mới có mặt (giao điểm), vì
df.Year.str.cat(df.quarter)
99 theo mặc định.

In [250]: df
Out[250]:
   Year quarter
0  2014      q1
1  2015      q2

In [251]: df = pd.concat([df] * 10**5)

In [252]: df.shape
Out[252]: (200000, 2)
0

Hướng dẫn how do i concatenate two dataframe columns in python? - làm cách nào để nối hai cột khung dữ liệu trong python?

Đối số

df.Year.str.cat(df.quarter)
52 cho
df.Year.str.cat(df.quarter)
86 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à
df['Year'].astype(str) + df['quarter']
02. Dưới đây là bản tóm tắt các tùy chọn
df.Year.str.cat(df.quarter)
52 và tên tương đương SQL của chúng:does not appear in either the left or right tables, the values in the joined table will be
df['Year'].astype(str) + df['quarter']
02. Here is a summary of the
df.Year.str.cat(df.quarter)
52 options and their SQL equivalent names:

Phương pháp hợp nhất

Tên tham gia SQL

Sự mô tả

df.Year.str.cat(df.quarter)
40

df['Year'].astype(str) + df['quarter']
05

Chỉ sử dụng các phím từ khung bên trái

df.Year.str.cat(df.quarter)
41

df['Year'].astype(str) + df['quarter']
07

Chỉ sử dụng các phím từ khung bên phải

df['Year'].astype(str) + df['quarter']
08

df['Year'].astype(str) + df['quarter']
09

Sử dụng liên minh các phím từ cả hai khung

df.Year.str.cat(df.quarter)
58

df['Year'].astype(str) + df['quarter']
11

Sử dụng giao điểm của các phím từ cả hai khung

df['Year'].astype(str) + df['quarter']
12

df['Year'].astype(str) + df['quarter']
13

Tạo sản phẩm Cartesian của các hàng của cả hai khung

In [250]: df
Out[250]:
   Year quarter
0  2014      q1
1  2015      q2

In [251]: df = pd.concat([df] * 10**5)

In [252]: df.shape
Out[252]: (200000, 2)
1

Hướng dẫn how do i concatenate two dataframe columns in python? - làm cách nào để nối hai cột khung dữ liệu trong python?

In [250]: df
Out[250]:
   Year quarter
0  2014      q1
1  2015      q2

In [251]: df = pd.concat([df] * 10**5)

In [252]: df.shape
Out[252]: (200000, 2)
2

Hướng dẫn how do i concatenate two dataframe columns in python? - làm cách nào để nối hai cột khung dữ liệu trong python?

In [250]: df
Out[250]:
   Year quarter
0  2014      q1
1  2015      q2

In [251]: df = pd.concat([df] * 10**5)

In [252]: df.shape
Out[252]: (200000, 2)
3

Hướng dẫn how do i concatenate two dataframe columns in python? - làm cách nào để nối hai cột khung dữ liệu trong python?

In [250]: df
Out[250]:
   Year quarter
0  2014      q1
1  2015      q2

In [251]: df = pd.concat([df] * 10**5)

In [252]: df.shape
Out[252]: (200000, 2)
4

Hướng dẫn how do i concatenate two dataframe columns in python? - làm cách nào để nối hai cột khung dữ liệu trong python?

In [250]: df
Out[250]:
   Year quarter
0  2014      q1
1  2015      q2

In [251]: df = pd.concat([df] * 10**5)

In [252]: df.shape
Out[252]: (200000, 2)
5

Hướng dẫn how do i concatenate two dataframe columns in python? - làm cách nào để nối hai cột khung dữ liệu trong python?

Bạn có thể hợp nhất một chuỗi đa chỉ số và một DataFrame, nếu tên của Multi Index tương ứng với các cột từ DataFrame. Chuyển đổi chuỗi thành DataFrame bằng cách sử dụng

df['Year'].astype(str) + df['quarter']
14 trước khi hợp nhất, như được hiển thị trong ví dụ sau.

In [250]: df
Out[250]:
   Year quarter
0  2014      q1
1  2015      q2

In [251]: df = pd.concat([df] * 10**5)

In [252]: df.shape
Out[252]: (200000, 2)
6

Dưới đây là một ví dụ khác với các khóa tham gia trùng lặp trong DataFrames:

In [250]: df
Out[250]:
   Year quarter
0  2014      q1
1  2015      q2

In [251]: df = pd.concat([df] * 10**5)

In [252]: df.shape
Out[252]: (200000, 2)
7

Hướng dẫn how do i concatenate two dataframe columns in python? - làm cách nào để nối hai cột khung dữ liệu trong python?

Cảnh báo

Tham gia / hợp nhất trên các phím trùng lặp có thể gây ra khung được trả về là phép nhân của kích thước hàng, có thể dẫn đến tràn bộ nhớ. Trách nhiệm của người dùng là quản lý các giá trị trùng lặp trong các khóa trước khi tham gia các khung dữ liệu lớn.

Kiểm tra các phím trùng lặp#

Người dùng có thể sử dụng đối số

df.Year.str.cat(df.quarter)
74 để tự động kiểm tra xem có các bản sao bất ngờ trong các khóa hợp nhất của họ không. Tính độc đáo chính được kiểm tra trước khi hoạt động hợp nhất và vì vậy nên bảo vệ chống tràn bộ nhớ. Kiểm tra tính duy nhất quan trọng cũng là một cách tốt để đảm bảo cấu trúc dữ liệu người dùng như mong đợi.

Trong ví dụ sau, có các giá trị trùng lặp của

df['Year'].astype(str) + df['quarter']
16 ở bên phải
df.Year.str.cat(df.quarter)
06. Vì đây không phải là sự hợp nhất một-một-như được chỉ định trong đối số
df.Year.str.cat(df.quarter)
74-một ngoại lệ sẽ được nêu ra.

In [250]: df
Out[250]:
   Year quarter
0  2014      q1
1  2015      q2

In [251]: df = pd.concat([df] * 10**5)

In [252]: df.shape
Out[252]: (200000, 2)
8

In [250]: df
Out[250]:
   Year quarter
0  2014      q1
1  2015      q2

In [251]: df = pd.concat([df] * 10**5)

In [252]: df.shape
Out[252]: (200000, 2)
9

Nếu người dùng biết về các bản sao ở bên phải

df.Year.str.cat(df.quarter)
06 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ố
df['Year'].astype(str) + df['quarter']
20 thay thế, điều này sẽ không gây ra ngoại lệ.

In [107]: %timeit df['Year'].astype(str) + df['quarter']
10 loops, best of 3: 131 ms per loop

In [106]: %timeit df['Year'].map(str) + df['quarter']
10 loops, best of 3: 161 ms per loop

In [108]: %timeit df.Year.str.cat(df.quarter)
10 loops, best of 3: 189 ms per loop

In [109]: %timeit df.loc[:, ['Year','quarter']].astype(str).sum(axis=1)
1 loop, best of 3: 567 ms per loop

In [110]: %timeit df[['Year','quarter']].astype(str).sum(axis=1)
1 loop, best of 3: 584 ms per loop

In [111]: %timeit df[['Year','quarter']].apply(lambda x : '{}{}'.format(x[0],x[1]), axis=1)
1 loop, best of 3: 24.7 s per loop
0

Chỉ báo hợp nhất#

df.Year.str.cat(df.quarter)
37 chấp nhận đối số
df.Year.str.cat(df.quarter)
66. Nếu
df.Year.str.cat(df.quarter)
49, một cột loại phân loại được gọi là
df.Year.str.cat(df.quarter)
67 sẽ được thêm vào đối tượng đầu ra có giá trị:

Nguồn gốc quan sát

Giá trị

df.Year.str.cat(df.quarter)
67

Chỉ hợp nhất khóa trong khung

df.Year.str.cat(df.quarter)
53

df.Year.str.cat(df.quarter)
69

Chỉ hợp nhất khóa trong khung

df.Year.str.cat(df.quarter)
54

df.Year.str.cat(df.quarter)
71

Hợp nhất khóa trong cả hai khung

df.Year.str.cat(df.quarter)
73

In [107]: %timeit df['Year'].astype(str) + df['quarter']
10 loops, best of 3: 131 ms per loop

In [106]: %timeit df['Year'].map(str) + df['quarter']
10 loops, best of 3: 161 ms per loop

In [108]: %timeit df.Year.str.cat(df.quarter)
10 loops, best of 3: 189 ms per loop

In [109]: %timeit df.loc[:, ['Year','quarter']].astype(str).sum(axis=1)
1 loop, best of 3: 567 ms per loop

In [110]: %timeit df[['Year','quarter']].astype(str).sum(axis=1)
1 loop, best of 3: 584 ms per loop

In [111]: %timeit df[['Year','quarter']].apply(lambda x : '{}{}'.format(x[0],x[1]), axis=1)
1 loop, best of 3: 24.7 s per loop
1

Đối số

df.Year.str.cat(df.quarter)
66 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 [107]: %timeit df['Year'].astype(str) + df['quarter']
10 loops, best of 3: 131 ms per loop

In [106]: %timeit df['Year'].map(str) + df['quarter']
10 loops, best of 3: 161 ms per loop

In [108]: %timeit df.Year.str.cat(df.quarter)
10 loops, best of 3: 189 ms per loop

In [109]: %timeit df.loc[:, ['Year','quarter']].astype(str).sum(axis=1)
1 loop, best of 3: 567 ms per loop

In [110]: %timeit df[['Year','quarter']].astype(str).sum(axis=1)
1 loop, best of 3: 584 ms per loop

In [111]: %timeit df[['Year','quarter']].apply(lambda x : '{}{}'.format(x[0],x[1]), axis=1)
1 loop, best of 3: 24.7 s per loop
2

Hợp nhất dtypes#

Hợp nhất sẽ bảo tồn DTYPE của các phím tham gia.

In [107]: %timeit df['Year'].astype(str) + df['quarter']
10 loops, best of 3: 131 ms per loop

In [106]: %timeit df['Year'].map(str) + df['quarter']
10 loops, best of 3: 161 ms per loop

In [108]: %timeit df.Year.str.cat(df.quarter)
10 loops, best of 3: 189 ms per loop

In [109]: %timeit df.loc[:, ['Year','quarter']].astype(str).sum(axis=1)
1 loop, best of 3: 567 ms per loop

In [110]: %timeit df[['Year','quarter']].astype(str).sum(axis=1)
1 loop, best of 3: 584 ms per loop

In [111]: %timeit df[['Year','quarter']].apply(lambda x : '{}{}'.format(x[0],x[1]), axis=1)
1 loop, best of 3: 24.7 s per loop
3

Chúng tôi có thể bảo tồn các phím tham gia:

In [107]: %timeit df['Year'].astype(str) + df['quarter']
10 loops, best of 3: 131 ms per loop

In [106]: %timeit df['Year'].map(str) + df['quarter']
10 loops, best of 3: 161 ms per loop

In [108]: %timeit df.Year.str.cat(df.quarter)
10 loops, best of 3: 189 ms per loop

In [109]: %timeit df.loc[:, ['Year','quarter']].astype(str).sum(axis=1)
1 loop, best of 3: 567 ms per loop

In [110]: %timeit df[['Year','quarter']].astype(str).sum(axis=1)
1 loop, best of 3: 584 ms per loop

In [111]: %timeit df[['Year','quarter']].apply(lambda x : '{}{}'.format(x[0],x[1]), axis=1)
1 loop, best of 3: 24.7 s per loop
4

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 [107]: %timeit df['Year'].astype(str) + df['quarter']
10 loops, best of 3: 131 ms per loop

In [106]: %timeit df['Year'].map(str) + df['quarter']
10 loops, best of 3: 161 ms per loop

In [108]: %timeit df.Year.str.cat(df.quarter)
10 loops, best of 3: 189 ms per loop

In [109]: %timeit df.loc[:, ['Year','quarter']].astype(str).sum(axis=1)
1 loop, best of 3: 567 ms per loop

In [110]: %timeit df[['Year','quarter']].astype(str).sum(axis=1)
1 loop, best of 3: 584 ms per loop

In [111]: %timeit df[['Year','quarter']].apply(lambda x : '{}{}'.format(x[0],x[1]), axis=1)
1 loop, best of 3: 24.7 s per loop
5

Hợp nhất sẽ bảo tồn

df['Year'].astype(str) + df['quarter']
32 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.

In [107]: %timeit df['Year'].astype(str) + df['quarter']
10 loops, best of 3: 131 ms per loop

In [106]: %timeit df['Year'].map(str) + df['quarter']
10 loops, best of 3: 161 ms per loop

In [108]: %timeit df.Year.str.cat(df.quarter)
10 loops, best of 3: 189 ms per loop

In [109]: %timeit df.loc[:, ['Year','quarter']].astype(str).sum(axis=1)
1 loop, best of 3: 567 ms per loop

In [110]: %timeit df[['Year','quarter']].astype(str).sum(axis=1)
1 loop, best of 3: 584 ms per loop

In [111]: %timeit df[['Year','quarter']].apply(lambda x : '{}{}'.format(x[0],x[1]), axis=1)
1 loop, best of 3: 24.7 s per loop
6

Khung phù hợp.

In [107]: %timeit df['Year'].astype(str) + df['quarter']
10 loops, best of 3: 131 ms per loop

In [106]: %timeit df['Year'].map(str) + df['quarter']
10 loops, best of 3: 161 ms per loop

In [108]: %timeit df.Year.str.cat(df.quarter)
10 loops, best of 3: 189 ms per loop

In [109]: %timeit df.loc[:, ['Year','quarter']].astype(str).sum(axis=1)
1 loop, best of 3: 567 ms per loop

In [110]: %timeit df[['Year','quarter']].astype(str).sum(axis=1)
1 loop, best of 3: 584 ms per loop

In [111]: %timeit df[['Year','quarter']].apply(lambda x : '{}{}'.format(x[0],x[1]), axis=1)
1 loop, best of 3: 24.7 s per loop
7

Kết quả được hợp nhất:

In [107]: %timeit df['Year'].astype(str) + df['quarter']
10 loops, best of 3: 131 ms per loop

In [106]: %timeit df['Year'].map(str) + df['quarter']
10 loops, best of 3: 161 ms per loop

In [108]: %timeit df.Year.str.cat(df.quarter)
10 loops, best of 3: 189 ms per loop

In [109]: %timeit df.loc[:, ['Year','quarter']].astype(str).sum(axis=1)
1 loop, best of 3: 567 ms per loop

In [110]: %timeit df[['Year','quarter']].astype(str).sum(axis=1)
1 loop, best of 3: 584 ms per loop

In [111]: %timeit df[['Year','quarter']].apply(lambda x : '{}{}'.format(x[0],x[1]), axis=1)
1 loop, best of 3: 24.7 s per loop
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.

Hợp nhất trên df['Year'].astype(str) + df['quarter'] 32 DTYPE giống nhau có thể khá hiệu quả so với việc hợp nhất df['Year'].astype(str) + df['quarter'] 34 DTYPE.

Tham gia trên Index#

In [107]: %timeit df['Year'].astype(str) + df['quarter']
10 loops, best of 3: 131 ms per loop

In [106]: %timeit df['Year'].map(str) + df['quarter']
10 loops, best of 3: 161 ms per loop

In [108]: %timeit df.Year.str.cat(df.quarter)
10 loops, best of 3: 189 ms per loop

In [109]: %timeit df.loc[:, ['Year','quarter']].astype(str).sum(axis=1)
1 loop, best of 3: 567 ms per loop

In [110]: %timeit df[['Year','quarter']].astype(str).sum(axis=1)
1 loop, best of 3: 584 ms per loop

In [111]: %timeit df[['Year','quarter']].apply(lambda x : '{}{}'.format(x[0],x[1]), axis=1)
1 loop, best of 3: 24.7 s per loop
9

Hướng dẫn how do i concatenate two dataframe columns in python? - làm cách nào để nối hai cột khung dữ liệu trong python?

In [113]: %timeit df['Year'].astype(str) + df['quarter']
10 loops, best of 3: 53.3 ms per loop

In [114]: %timeit df['Year'].map(str) + df['quarter']
10 loops, best of 3: 65.5 ms per loop

In [115]: %timeit df.Year.str.cat(df.quarter)
10 loops, best of 3: 79.9 ms per loop

In [116]: %timeit df.loc[:, ['Year','quarter']].astype(str).sum(axis=1)
1 loop, best of 3: 230 ms per loop

In [117]: %timeit df[['Year','quarter']].astype(str).sum(axis=1)
1 loop, best of 3: 230 ms per loop

In [118]: %timeit df[['Year','quarter']].apply(lambda x : '{}{}'.format(x[0],x[1]), axis=1)
1 loop, best of 3: 9.38 s per loop
0

Hướng dẫn how do i concatenate two dataframe columns in python? - làm cách nào để nối hai cột khung dữ liệu trong python?

df['Year'].astype(str) + df['quarter']
35 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
df['Year'].astype(str) + df['quarter']
36 thành một kết quả duy nhất
df.Year.str.cat(df.quarter)
06. Đây là một ví dụ rất cơ bản:

In [113]: %timeit df['Year'].astype(str) + df['quarter']
10 loops, best of 3: 53.3 ms per loop

In [114]: %timeit df['Year'].map(str) + df['quarter']
10 loops, best of 3: 65.5 ms per loop

In [115]: %timeit df.Year.str.cat(df.quarter)
10 loops, best of 3: 79.9 ms per loop

In [116]: %timeit df.loc[:, ['Year','quarter']].astype(str).sum(axis=1)
1 loop, best of 3: 230 ms per loop

In [117]: %timeit df[['Year','quarter']].astype(str).sum(axis=1)
1 loop, best of 3: 230 ms per loop

In [118]: %timeit df[['Year','quarter']].apply(lambda x : '{}{}'.format(x[0],x[1]), axis=1)
1 loop, best of 3: 9.38 s per loop
1

Hướng dẫn how do i concatenate two dataframe columns in python? - làm cách nào để nối hai cột khung dữ liệu trong python?

Giống như trên, nhưng với

df.Year.str.cat(df.quarter)
99.

In [113]: %timeit df['Year'].astype(str) + df['quarter']
10 loops, best of 3: 53.3 ms per loop

In [114]: %timeit df['Year'].map(str) + df['quarter']
10 loops, best of 3: 65.5 ms per loop

In [115]: %timeit df.Year.str.cat(df.quarter)
10 loops, best of 3: 79.9 ms per loop

In [116]: %timeit df.loc[:, ['Year','quarter']].astype(str).sum(axis=1)
1 loop, best of 3: 230 ms per loop

In [117]: %timeit df[['Year','quarter']].astype(str).sum(axis=1)
1 loop, best of 3: 230 ms per loop

In [118]: %timeit df[['Year','quarter']].apply(lambda x : '{}{}'.format(x[0],x[1]), axis=1)
1 loop, best of 3: 9.38 s per loop
2

Hướng dẫn how do i concatenate two dataframe columns in python? - làm cách nào để nối hai cột khung dữ liệu trong python?

In [113]: %timeit df['Year'].astype(str) + df['quarter']
10 loops, best of 3: 53.3 ms per loop

In [114]: %timeit df['Year'].map(str) + df['quarter']
10 loops, best of 3: 65.5 ms per loop

In [115]: %timeit df.Year.str.cat(df.quarter)
10 loops, best of 3: 79.9 ms per loop

In [116]: %timeit df.loc[:, ['Year','quarter']].astype(str).sum(axis=1)
1 loop, best of 3: 230 ms per loop

In [117]: %timeit df[['Year','quarter']].astype(str).sum(axis=1)
1 loop, best of 3: 230 ms per loop

In [118]: %timeit df[['Year','quarter']].apply(lambda x : '{}{}'.format(x[0],x[1]), axis=1)
1 loop, best of 3: 9.38 s per loop
3

Hướng dẫn how do i concatenate two dataframe columns in python? - làm cách nào để nối hai cột khung dữ liệu trong python?

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 df.Year.str.cat(df.quarter) 86 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#

In [113]: %timeit df['Year'].astype(str) + df['quarter']
10 loops, best of 3: 53.3 ms per loop

In [114]: %timeit df['Year'].map(str) + df['quarter']
10 loops, best of 3: 65.5 ms per loop

In [115]: %timeit df.Year.str.cat(df.quarter)
10 loops, best of 3: 79.9 ms per loop

In [116]: %timeit df.loc[:, ['Year','quarter']].astype(str).sum(axis=1)
1 loop, best of 3: 230 ms per loop

In [117]: %timeit df[['Year','quarter']].astype(str).sum(axis=1)
1 loop, best of 3: 230 ms per loop

In [118]: %timeit df[['Year','quarter']].apply(lambda x : '{}{}'.format(x[0],x[1]), axis=1)
1 loop, best of 3: 9.38 s per loop
4

df.Year.str.cat(df.quarter)
90 có một đối số
df.Year.str.cat(df.quarter)
42 tùy chọn có thể là một cột hoặc nhiều tên cột, trong đó chỉ định rằng
df.Year.str.cat(df.quarter)
06 đã vượt qua sẽ được căn chỉnh trên cột đó trong
df.Year.str.cat(df.quarter)
06. Hai cuộc gọi chức năng này hoàn toàn tương đương:

In [113]: %timeit df['Year'].astype(str) + df['quarter']
10 loops, best of 3: 53.3 ms per loop

In [114]: %timeit df['Year'].map(str) + df['quarter']
10 loops, best of 3: 65.5 ms per loop

In [115]: %timeit df.Year.str.cat(df.quarter)
10 loops, best of 3: 79.9 ms per loop

In [116]: %timeit df.loc[:, ['Year','quarter']].astype(str).sum(axis=1)
1 loop, best of 3: 230 ms per loop

In [117]: %timeit df[['Year','quarter']].astype(str).sum(axis=1)
1 loop, best of 3: 230 ms per loop

In [118]: %timeit df[['Year','quarter']].apply(lambda x : '{}{}'.format(x[0],x[1]), axis=1)
1 loop, best of 3: 9.38 s per loop
5

Hướng dẫn how do i concatenate two dataframe columns in python? - làm cách nào để nối hai cột khung dữ liệu trong python?

In [113]: %timeit df['Year'].astype(str) + df['quarter']
10 loops, best of 3: 53.3 ms per loop

In [114]: %timeit df['Year'].map(str) + df['quarter']
10 loops, best of 3: 65.5 ms per loop

In [115]: %timeit df.Year.str.cat(df.quarter)
10 loops, best of 3: 79.9 ms per loop

In [116]: %timeit df.loc[:, ['Year','quarter']].astype(str).sum(axis=1)
1 loop, best of 3: 230 ms per loop

In [117]: %timeit df[['Year','quarter']].astype(str).sum(axis=1)
1 loop, best of 3: 230 ms per loop

In [118]: %timeit df[['Year','quarter']].apply(lambda x : '{}{}'.format(x[0],x[1]), axis=1)
1 loop, best of 3: 9.38 s per loop
6

Hướng dẫn how do i concatenate two dataframe columns in python? - làm cách nào để nối hai cột khung dữ liệu trong python?

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ố ____ 106 đã được lập chỉ mục bởi khóa tham gia), sử dụ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  D7
1 có thể thuận tiện hơn. Đây là một ví dụ đơn giản:

In [113]: %timeit df['Year'].astype(str) + df['quarter']
10 loops, best of 3: 53.3 ms per loop

In [114]: %timeit df['Year'].map(str) + df['quarter']
10 loops, best of 3: 65.5 ms per loop

In [115]: %timeit df.Year.str.cat(df.quarter)
10 loops, best of 3: 79.9 ms per loop

In [116]: %timeit df.loc[:, ['Year','quarter']].astype(str).sum(axis=1)
1 loop, best of 3: 230 ms per loop

In [117]: %timeit df[['Year','quarter']].astype(str).sum(axis=1)
1 loop, best of 3: 230 ms per loop

In [118]: %timeit df[['Year','quarter']].apply(lambda x : '{}{}'.format(x[0],x[1]), axis=1)
1 loop, best of 3: 9.38 s per loop
7

Để tham gia vào nhiều khóa, DataFrame được truyền phải có

df.Year.str.cat(df.quarter)
01:

In [113]: %timeit df['Year'].astype(str) + df['quarter']
10 loops, best of 3: 53.3 ms per loop

In [114]: %timeit df['Year'].map(str) + df['quarter']
10 loops, best of 3: 65.5 ms per loop

In [115]: %timeit df.Year.str.cat(df.quarter)
10 loops, best of 3: 79.9 ms per loop

In [116]: %timeit df.loc[:, ['Year','quarter']].astype(str).sum(axis=1)
1 loop, best of 3: 230 ms per loop

In [117]: %timeit df[['Year','quarter']].astype(str).sum(axis=1)
1 loop, best of 3: 230 ms per loop

In [118]: %timeit df[['Year','quarter']].apply(lambda x : '{}{}'.format(x[0],x[1]), axis=1)
1 loop, best of 3: 9.38 s per loop
8

Hướng dẫn how do i concatenate two dataframe columns in python? - làm cách nào để nối hai cột khung dữ liệu trong python?

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 [113]: %timeit df['Year'].astype(str) + df['quarter']
10 loops, best of 3: 53.3 ms per loop

In [114]: %timeit df['Year'].map(str) + df['quarter']
10 loops, best of 3: 65.5 ms per loop

In [115]: %timeit df.Year.str.cat(df.quarter)
10 loops, best of 3: 79.9 ms per loop

In [116]: %timeit df.loc[:, ['Year','quarter']].astype(str).sum(axis=1)
1 loop, best of 3: 230 ms per loop

In [117]: %timeit df[['Year','quarter']].astype(str).sum(axis=1)
1 loop, best of 3: 230 ms per loop

In [118]: %timeit df[['Year','quarter']].apply(lambda x : '{}{}'.format(x[0],x[1]), axis=1)
1 loop, best of 3: 9.38 s per loop
9

Hướng dẫn how do i concatenate two dataframe columns in python? - làm cách nào để nối hai cột khung dữ liệu trong python?

Mặc định cho

df.Year.str.cat(df.quarter)
92 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 [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)
0

Hướng dẫn how do i concatenate two dataframe columns in python? - làm cách nào để nối hai cột khung dữ liệu trong python?

Bạn có thể tham gia một

df.Year.str.cat(df.quarter)
06 chỉ số đơn với mức độ đa dạng
df.Year.str.cat(df.quarter)
06. 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 [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)
1

Hướng dẫn how do i concatenate two dataframe columns in python? - làm cách nào để nối hai cột khung dữ liệu trong python?

Đ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 [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)
2

Đ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 [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)
3

Hướng dẫn how do i concatenate two dataframe columns in python? - làm cách nào để nối hai cột khung dữ liệu trong python?

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 [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)
4

Hướng dẫn how do i concatenate two dataframe columns in python? - làm cách nào để nối hai cột khung dữ liệu trong python?

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.

Hợp nhất trên df['Year'].astype(str) + df['quarter'] 32 DTYPE giống nhau có thể khá hiệu quả so với việc hợp nhất df['Year'].astype(str) + df['quarter'] 34 DTYPE.

Tham gia trên Index#

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)
5

Hướng dẫn how do i concatenate two dataframe columns in python? - làm cách nào để nối hai cột khung dữ liệu trong python?

df['Year'].astype(str) + df['quarter']
35 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
df['Year'].astype(str) + df['quarter']
36 thành một kết quả duy nhất
df.Year.str.cat(df.quarter)
06. Đây là một ví dụ rất cơ bản:

Hướng dẫn how do i concatenate two dataframe columns in python? - làm cách nào để nối hai cột khung dữ liệu trong python?

Giống như trên, nhưng với

df.Year.str.cat(df.quarter)
99.

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)
7

Hướng dẫn how do i concatenate two dataframe columns in python? - làm cách nào để nối hai cột khung dữ liệu trong python?

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 df.Year.str.cat(df.quarter) 86 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#

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)
8

Hướng dẫn how do i concatenate two dataframe columns in python? - làm cách nào để nối hai cột khung dữ liệu trong python?

df.Year.str.cat(df.quarter) 90 có một đối số df.Year.str.cat(df.quarter) 42 tùy chọn có thể là một cột hoặc nhiều tên cột, trong đó chỉ định rằng df.Year.str.cat(df.quarter) 06 đã vượt qua sẽ được căn chỉnh trên cột đó trong df.Year.str.cat(df.quarter) 06. Hai cuộc gọi chức năng này hoàn toàn tương đương:

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ố ____ 106 đã được lập chỉ mục bởi khóa tham gia), sử dụ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  D7
1 có thể thuận tiện hơn. Đâ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)
9

Để tham gia vào nhiều khóa, DataFrame được truyền phải có

df.Year.str.cat(df.quarter)
01:

pd.concat(
    objs,
    axis=0,
    join="outer",
    ignore_index=False,
    keys=None,
    levels=None,
    names=None,
    verify_integrity=False,
    copy=True,
)
0

Hướng dẫn how do i concatenate two dataframe columns in python? - làm cách nào để nối hai cột khung dữ liệu trong python?

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:

pd.concat(
    objs,
    axis=0,
    join="outer",
    ignore_index=False,
    keys=None,
    levels=None,
    names=None,
    verify_integrity=False,
    copy=True,
)
1

Hướng dẫn how do i concatenate two dataframe columns in python? - làm cách nào để nối hai cột khung dữ liệu trong python?

Mặc định cho df.Year.str.cat(df.quarter) 92 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#

pd.concat(
    objs,
    axis=0,
    join="outer",
    ignore_index=False,
    keys=None,
    levels=None,
    names=None,
    verify_integrity=False,
    copy=True,
)
2

Hợp nhất ASOF#

Một

df['Year'].astype(str) + df['quarter']
71 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
df.Year.str.cat(df.quarter)
40
df.Year.str.cat(df.quarter)
06, chúng tôi chọn hàng cuối cùng trong
df.Year.str.cat(df.quarter)
41
df.Year.str.cat(df.quarter)
06 có khóa
df.Year.str.cat(df.quarter)
42 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

df['Year'].astype(str) + df['quarter']
77 như nhau, ngoài trận đấu gần nhất trên khóa
df.Year.str.cat(df.quarter)
42.

Ví dụ; Chúng tôi có thể có

df['Year'].astype(str) + df['quarter']
79 và
df['Year'].astype(str) + df['quarter']
80 và chúng tôi muốn
df['Year'].astype(str) + df['quarter']
81 hợp nhất chúng.

pd.concat(
    objs,
    axis=0,
    join="outer",
    ignore_index=False,
    keys=None,
    levels=None,
    names=None,
    verify_integrity=False,
    copy=True,
)
3

pd.concat(
    objs,
    axis=0,
    join="outer",
    ignore_index=False,
    keys=None,
    levels=None,
    names=None,
    verify_integrity=False,
    copy=True,
)
4

Theo mặc định, chúng tôi đang lấy ASOF của các trích dẫn.

pd.concat(
    objs,
    axis=0,
    join="outer",
    ignore_index=False,
    keys=None,
    levels=None,
    names=None,
    verify_integrity=False,
    copy=True,
)
5

Chúng tôi chỉ có ASOF trong

df['Year'].astype(str) + df['quarter']
82 giữa thời gian báo giá và thời gian thương mại.

pd.concat(
    objs,
    axis=0,
    join="outer",
    ignore_index=False,
    keys=None,
    levels=None,
    names=None,
    verify_integrity=False,
    copy=True,
)
6

Chúng tôi chỉ ASOF trong

df['Year'].astype(str) + df['quarter']
83 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.

pd.concat(
    objs,
    axis=0,
    join="outer",
    ignore_index=False,
    keys=None,
    levels=None,
    names=None,
    verify_integrity=False,
    copy=True,
)
7

So sánh các đối tượng#

Các phương thức

df['Year'].astype(str) + df['quarter']
84 và
df['Year'].astype(str) + df['quarter']
84 cho phép bạn so sánh hai lần tương ứng hoặc chuỗi dữ liệu 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

df.Year.str.cat(df.quarter)
06 và xếp chồng sự khác biệt của chúng cạnh nhau.

pd.concat(
    objs,
    axis=0,
    join="outer",
    ignore_index=False,
    keys=None,
    levels=None,
    names=None,
    verify_integrity=False,
    copy=True,
)
8

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

Theo mặc định, nếu hai giá trị tương ứng bằng nhau, chúng sẽ được hiển thị là

df['Year'].astype(str) + df['quarter']
87. 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 [6]: result = pd.concat(frames, keys=["x", "y", "z"])
1

Nếu bạn muốn giữ tất cả các hàng và cột gốc, hãy đặt đối số

df['Year'].astype(str) + df['quarter']
88 thành
df.Year.str.cat(df.quarter)
49.

In [6]: result = pd.concat(frames, keys=["x", "y", "z"])
2

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 [6]: result = pd.concat(frames, keys=["x", "y", "z"])
3

Làm thế nào để tôi kết hợp hai cột trong Python?

DF ['Tên cột mới'] = DF ['Tên cột 1'] + DF ['Tên cột thứ 2'] + ... Lưu ý rằng ký hiệu cộng (' +') được sử dụng để thực hiện kết nối.Bạn có thể bỏ qua lỗi này bằng cách ánh xạ các giá trị thành các chuỗi bằng cú pháp sau: DF ['Tên cột mới'] = DF ['Tên cột 1']. Notice that the plus symbol ('+') is used to perform the concatenation. You can bypass this error by mapping the values to strings using the following syntax: df['New Column Name'] = df['1st Column Name'].

Làm cách nào để kết hợp hai cột với DataFrame?

Để hợp nhất hai pandas dataFrame với cột chung, hãy sử dụng hàm Merge () và đặt tham số ON làm tên cột.use the merge() function and set the ON parameter as the column name.

Làm thế nào để bạn kết hợp với DataFrame trong Python?

Sử dụng phương thức dataFrame.Append () để kết hợp các khung dữ liệu trên các hàng.Cho E.X, DF.Phụ lục (DF1) nối DF1 vào DFAFrame DF. append() method to concatenate DataFrames on rows. For E.x, df. append(df1) appends df1 to the df DataFrame.

Làm thế nào để bạn kết hợp hai DataFrames theo chiều ngang trong Python?

Sử dụng PD ...
DataFrame1 = Pd.DataFrame ([[1, 2], [4, 5]]).
dataFrame2 = pd.DataFrame ([[2, 1], [5, 4]]).
Concatenated_dataFrames = pd.Concat ([dataFrame1, dataFrame2], trục = 1).