在pandas数据帧中用可变类型替换NaN

时间:2017-08-23 11:46:51

标签: python pandas dataframe nan

在尝试解决另一个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解决方案,我将保留此信息。

1 个答案:

答案 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