在尝试解决另一个question的过程中,我遇到了障碍。这是我的数据:
col1 col2 col3 col4 col5 user_ID
0 [1] [3] [] NaN NaN 1
1 [2, 3] [3] [1, 2, 3] NaN NaN 2
2 [3] [3, 1] [3, 1] NaN NaN 3
0 [1, 2] NaN [1] [3] NaN 1
1 [3] NaN [2, 3] [3] NaN 2
2 [3] NaN [3] [3, 1] NaN 3
0 [1] [3] NaN NaN [] 1
1 [2, 3] [3] NaN NaN [1, 2, 3] 2
2 [3] [3, 1] NaN NaN [3, 1] 3
我想用空列表替换那些NaN,以便我可以沿着这些列执行求和。
我已经尝试了df.replace
,但我得到了
TypeError: Invalid "to_replace" type: 'float'
我也尝试了df.fillna
并获得了
TypeError: "value" parameter must be a scalar or dict, but you passed a "list"
如何使用空列表[]
填充这些NaN?
编辑:事实证明这是重复的!由于标记的欺骗没有applymap
解决方案,我将保留此信息。
答案 0 :(得分:3)
有点脏,但我用df.applymap
解决了这个问题:
In [671]: df.applymap(lambda x: [] if x != x else x)
Out[671]
col1 col2 col3 col4 col5 user_ID
0 [1] [3] [] [] [] 1
1 [2, 3] [3] [1, 2, 3] [] [] 2
2 [3] [3, 1] [3, 1] [] [] 3
0 [1, 2] [] [1] [3] [] 1
1 [3] [] [2, 3] [3] [] 2
2 [3] [] [3] [3, 1] [] 3
0 [1] [3] [] [] [] 1
1 [2, 3] [3] [] [] [1, 2, 3] 2
2 [3] [3, 1] [] [] [3, 1] 3