Pandas:转换列的类型

Posted

技术标签:

【中文标题】Pandas:转换列的类型【英文标题】:Pandas: convert type of column 【发布时间】:2017-04-07 12:07:42 【问题描述】:

我有一个带列的数据框

                                         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:值的长度与索引的长度不匹配

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

【问题讨论】:

【参考方案1】:

我觉得你可以用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

【讨论】:

以上是关于Pandas:转换列的类型的主要内容,如果未能解决你的问题,请参考以下文章

使用 seaborn 绘图时转换 pandas 列中的数据类型

Python Pandas中数据类型转换方法的差异

如何将 Pandas 数据框中的字符串转换为“日期”数据类型?

如何使用 sklearn 转换器扁平化 pandas 数据框中的数组类型?

如何在 Pandas 中转换 datetime 列的时区?

将 pandas 转换为定义用于键值的列的字典