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:值的长度与索引的长度不匹配
如何修复该错误并获取字符串而不是列表?
我认为你可以使用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)