Home > OS >  Replace a column with some [0,0,1,1] , [316.0,318.0] etc in it with ['0', '0', &
Replace a column with some [0,0,1,1] , [316.0,318.0] etc in it with ['0', '0', &

Time:07-30

I have dataframe (df3) with 266 rows which looks like below. The label columns list items are of type int.

Id label
4cfab [0,0,1,1]
924cf [0,0,1,1]
916b8 [316.0,318.0]
0f549 [0,0,1,1]
db696 [345.0,39.0,9]

I want the result like below:

Id label
4cfab ['0', '0', '1','1']
924cf ['0', '0', '1','1']
916b8 ['316.0','318.0']
0f549 ['0', '0', '1','1']
db696 ['45.0','39.0','9']

I've tried the following but it didn't work:

df3['label'] = [str(i) for x in df3['label'] for i in x]

CodePudding user response:

You can use the pandas.Series.map method to broadcast a function over each element of the series. In this case, each element is a list. So for each list, we want to map the function str over each element of the list.

df3['label'] = df3.label.map(lambda x: list(map(str, x)))

CodePudding user response:

You can try as a list comprehension within a map():

df3['label'] = df3['label'].map(lambda x: [str(y) for y in x])

CodePudding user response:

You can try using apply() to add the quotation marks. The for loop in the lambda function loops through all the values within the lists in the df3['label'] column.

df3['label'] = df3['label'].apply(lambda x: ["'"   str(i)   "'" for i in range(len(x))])
  • Related