Skip to main content
 首页 » 编程设计

python之Pandas :转换列的类型

2025年05月04日15zhwl

我有一个包含列的数据框

                                         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/Интернет/Универсальное/ ]  

列中有列表。我需要从每个列表中获取第一个字符串,但是有些列表是空的,当我尝试使用

df.category.iloc[0] 

我明白了

ValueError: Length of values does not match length of index

如何修复该错误并获取字符串而不是列表?

请您参考如下方法:

我想你可以使用 indexing with str :

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

示例:

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 

如果需要用空字符串替换NaN:

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