1

I have a df,

   Names    Values  TC
   Ram      2      TC Count
   pechi    2      TC Count
   Sunil    1      TC Count
   Ravi     1      TC Count
   sri      1      TC Count

I want to add some texts between the data columns

I tried df.join but not wot working fine,

My expected output is,

df,

Names    Values  
Ram      val2balTCcount   
pechi    val2balTCcount         
Sunil    val1balTCcount         
Ravi     val1balTCcount         
sri      val1balTCcount   

Thanks in Advance!

Pyd
  • 6,017
  • 18
  • 52
  • 109

2 Answers2

2

You can use pd.Series.str.cat and pd.Series.apply with str.format

df.drop('TC', 1).assign(
    Values=df.Values.apply('val{}bal'.format)
             .str.cat(df.TC.str.replace(' ', '')))

   Names          Values
0    Ram  val2balTCCount
1  pechi  val2balTCCount
2  Sunil  val1balTCCount
3   Ravi  val1balTCCount
4    sri  val1balTCCount

Though the pd.Series.cat can be replaced with +

df.drop('TC', 1).assign(
    Values=df.Values.apply('val{}bal'.format)
          + df.TC.str.replace(' ', ''))

   Names          Values
0    Ram  val2balTCCount
1  pechi  val2balTCCount
2  Sunil  val1balTCCount
3   Ravi  val1balTCCount
4    sri  val1balTCCount
piRSquared
  • 285,575
  • 57
  • 475
  • 624
1

Use:

  • convert all numeric columns to string by astype
  • replace whitespaces by empty space

df['Values'] = 'val' + df['Values'].astype(str) + 'bal' + df['TC'].str.replace('\s+', '') 
print (df)
   Names          Values        TC
0    Ram  val2balTCCount  TC Count
1  pechi  val2balTCCount  TC Count
2  Sunil  val1balTCCount  TC Count
3   Ravi  val1balTCCount  TC Count
4    sri  val1balTCCount  TC Count

And if need remove TC column use pop:

df['Values'] = 'val' + df['Values'].astype(str) + 'bal' + df.pop('TC').str.replace('\s+', '')
print (df)
   Names          Values
0    Ram  val2balTCCount
1  pechi  val2balTCCount
2  Sunil  val1balTCCount
3   Ravi  val1balTCCount
4    sri  val1balTCCount
jezrael
  • 822,522
  • 95
  • 1,334
  • 1,252