熊猫:转换类型的列

Pet*_*rov 1 python string list dataframe pandas

我有一个带有列的数据框

                                         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/????????/?????????????/ ] 
Run Code Online (Sandbox Code Playgroud)

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

df.category.iloc[0]
Run Code Online (Sandbox Code Playgroud)

我明白了

ValueError:值的长度与索引的长度不匹配

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

jez*_*ael 6

我认为你可以使用str的索引:

df.category = df.category.str[0]  
Run Code Online (Sandbox Code Playgroud)

样品:

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
Run Code Online (Sandbox Code Playgroud)

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

df.category = df.category.str[0].fillna('')
print (df)
  category
0       aw
1         
2       tr
3      tre
Run Code Online (Sandbox Code Playgroud)