Which pandas function works like R's cbind for columns?

What is the pandas equivalent of R’s cbind for horizontally concatenating vectors?

Suppose I have two DataFrames in Python as follows:

import pandas as pd

test1 = pd.DataFrame([1, 2, 3, 4, 5])
test2 = pd.DataFrame([4, 2, 1, 3, 7])

I attempted test1.append(test2), but that behaves like R’s rbind, stacking the rows vertically. How can I combine these two DataFrames as two columns, similar to the behavior of the cbind function in R? Specifically, I am looking for an approach to implement cbind in Python with pandas.

I’ve worked with both R and Python, and when it comes to replicating cbind in Python, the most straightforward approach is using pd.DataFrame directly. You just create a new DataFrame and manually assign columns like this:

import pandas as pd

test1 = pd.DataFrame([1, 2, 3, 4, 5])
test2 = pd.DataFrame([4, 2, 1, 3, 7])

test3 = pd.DataFrame({'a': test1[0], 'b': test2[0]})
print(test3)

This ensures you explicitly define column names while combining DataFrames horizontally—effectively mimicking cbind in Python.

Great approach, @yanisleidi-rodriguez! Another way to achieve cbind in Python is by leveraging Python’s built-in zip function. This method is useful when working with lists before converting them into a DataFrame.

import pandas as pd

test1 = pd.DataFrame([1, 2, 3, 4, 5])
test2 = pd.DataFrame([4, 2, 1, 3, 7])

combined_data = list(zip(test1[0], test2[0]))
test3 = pd.DataFrame(combined_data, columns=['a', 'b'])
print(test3)

Using zip can be more efficient when handling lists or different data structures before bringing them into pandas. It’s a clean way to replicate cbind in Python.

Both methods work well, but if you’re already working with DataFrames, using join might be the most pandas-friendly approach. Here’s how you can do it:

import pandas as pd

test1 = pd.DataFrame([1, 2, 3, 4, 5])
test2 = pd.DataFrame([4, 2, 1, 3, 7])

test3 = test1.join(test2, lsuffix='_1', rsuffix='_2')
test3.columns = ['a', 'b']
print(test3)

The .join() method is powerful when dealing with indexed DataFrames and maintains alignment. It’s another effective way to perform cbind in Python, especially when working with real-world datasets.