我正在尝试用一个空列表 [] 替换我数据中的一些 NaN 值。但是,该列表表示为 str 并且不允许我正确应用 len() 函数。无论如何用熊猫中的实际空列表替换 NaN 值?
In [28]: d = pd.DataFrame({'x' : [[1,2,3], [1,2], np.NaN, np.NaN], 'y' : [1,2,3,4]})
In [29]: d
Out[29]:
x y
0 [1, 2, 3] 1
1 [1, 2] 2
2 NaN 3
3 NaN 4
In [32]: d.x.replace(np.NaN, '[]', inplace=True)
In [33]: d
Out[33]:
x y
0 [1, 2, 3] 1
1 [1, 2] 2
2 [] 3
3 [] 4
In [34]: d.x.apply(len)
Out[34]:
0 3
1 2
2 2
3 2
Name: x, dtype: int64
原文由 moku 发布,翻译遵循 CC BY-SA 4.0 许可协议
这使用
isnull
和loc
来掩盖系列:您必须使用
apply
来执行此操作,以免列表对象被解释为要分配回 df 的数组,df 将尝试将形状对齐回原始系列编辑
使用您更新的示例,以下工作: