返回存储在panda中的列中的列表的大小



我正在尝试将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值的行/用一些默认值填充它们。

最新更新