1

I have a dataframe with column

                                         category  
0          [Рубрики/Hi-Tech/Интернет/Универсальное/ ]  
1   [/Рубрики/Бизнес/Недвижимость/Базы недвижимост...  
2   [] 
3   [/Рубрики/Бизнес/Недвижимость/Базы недвижимост...  
4          [Рубрики/Hi-Tech/Интернет/Универсальное/ ]  
5   [] 
6          [Рубрики/Hi-Tech/Интернет/Универсальное/ ]  
7   [/Рубрики/Бизнес/Недвижимость/Базы недвижимост...  
8          [Рубрики/Hi-Tech/Интернет/Универсальное/ ]  
9   [/Рубрики/Бизнес/Недвижимость/Базы недвижимост...  
10         [Рубрики/Hi-Tech/Интернет/Универсальное/ ]  
11  [/Рубрики/Бизнес/Недвижимость/Базы недвижимост...  
12  []  
13  [/Рубрики/Бизнес/Недвижимость/Базы недвижимост...  
14         [Рубрики/Hi-Tech/Интернет/Универсальное/ ] 

There are lists in column. I need to get first string from every list, but some of lists are empty and when I try to use

df.category.iloc[0]

I get

ValueError: Length of values does not match length of index

How can I fix that error and get strings instead of lists?

jezrael
  • 822,522
  • 95
  • 1,334
  • 1,252
Petr Petrov
  • 4,090
  • 10
  • 31
  • 68

1 Answers1

6

I think you can use indexing with str:

df.category = df.category.str[0]  

Sample:

df = pd.DataFrame({'category': [['aw','be'],[],['tr','yt','uy'],['tre']]})
print (df)
       category
0      [aw, be]
1            []
2  [tr, yt, uy]
3         [tre]

df.category = df.category.str[0]  
print (df)
  category
0       aw
1      NaN
2       tr
3      tre

If need replace NaN with empty string:

df.category = df.category.str[0].fillna('')
print (df)
  category
0       aw
1         
2       tr
3      tre
jezrael
  • 822,522
  • 95
  • 1,334
  • 1,252