Yibin Wong
Yibin Wong

Reputation: 3

Create a new dataframe based on two columns of value in pandas dataframe

I have a dataframe df1 in python as below:

Type Category
a      1
b      2
c      3
d      4

Expected output:

Type
a/1 
b/2
c/3
d/4

The actual dataframe is way larger than this thus i can't type out every cells for the new dataframe.

How can I extract the columns and output to another dataframe with the '/' seperated? Maybe using some for loop?

Upvotes: 0

Views: 236

Answers (1)

Hugolmn
Hugolmn

Reputation: 1560

Using str.cat

The right pandas-y way to proceed is by using str.cat

df['Type'] = df.Type.str.cat(others=df.Category.astype(str), sep='/')

others contains the pd.Series to concatenate, and sep the separator to use.

Result

    Type
0   a/1
1   b/2
2   c/3
3   d/4

Performance comparison

%%timeit
df.Type.str.cat(others=df.Category.astype(str), sep='/')
>> 286 µs ± 449 ns per loop (mean ± std. dev. of 7 runs, 1000 loops each)
%%timeit
df['Type'] + '/' + df['Category'].astype(str)
>> 348 µs ± 5.7 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)

Both solutions give the same result, but using str.cat is about ~20% faster.

Upvotes: 1

Related Questions