我正在尝试将pandas数据帧中的一列转换为项目列表。为此,我应用了一个字符串函数来拆分列变量
我首先应用以下命令:
route = df.Route.str.split('→')
route
输出如下:
0 [BLR , DEL]
1 [CCU , IXR , BBI , BLR]
...
10681 [BLR , DEL]
10682 [DEL , GOI , BOM , COK]
Name: Route, Length: 10683, dtype: object
从这里开始,如果我想应用一个长度函数来获得该列上每个列表的长度,它会引发一个TypeError
route.apply(lambda x: len(x))
TypeError:"float"类型的对象没有len((
变量的类型显然是一个列表,当我应用一个函数用:route.apply(lambda x: type(x))
检查类型时,它会返回:
0 <class 'list'>
1 <class 'list'>
2 <class 'list'>
...
为什么我会收到TypeError?
您的系列中可能有NaN
。尝试:
mask = df["Route"].notna()
df.loc[mask, "Route"] = df.loc[mask, "Route"].apply(len)
print(df)
另一种选择是删除具有NaN值的行/用一些默认值填充它们。