Duplicating rows with certain value in a column

3092 views python
4

I have to duplicate rows that have a certain value in a column and replace the value with another value.

For instance, I have this data:

import pandas as pd    
df = pd.DataFrame({'Date': [1, 2, 3, 4], 'B': [1, 2, 3, 2], 'C': ['A','B','C','D']})

Now, I want to duplicate the rows that have 2 in column 'B' then change 2 to 4

df = pd.DataFrame({'Date': [1, 2, 2, 3, 4, 4], 'B': [1, 2, 4, 3, 2, 4], 'C': ['A','B','B','C','D','D']})

Please help me on this one. Thank you.

answered question

1 Answer

12

You can use append, to append the rows where B == 2, which you can extract using loc, but also reassigning B to 4 using assign. If order matters, you can then order by C (to reproduce your desired frame):

>>> df.append(df[df.B.eq(2)].assign(B=4)).sort_values('C')
   B  C  Date
0  1  A     1
1  2  B     2
1  4  B     2
2  3  C     3
3  2  D     4
3  4  D     4

posted this

Have an answer?

JD

Please login first before posting an answer.