【问题标题】:Replacing NaNs with mutable types in a pandas dataframe [duplicate]在熊猫数据框中用可变类型替换 NaN [重复]
【发布时间】:2017-08-28 13:33:03
【问题描述】:

在尝试解决另一个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 解决方案,我将把它留在这里。

【问题讨论】:

  • @Ev.Kounis 否。我概述的所有方法都适用于标量值,但不适用于空列表。
  • @Coldspeed Strange.. x != x 不过不错。
  • @Ev.Kounis 更新了一些错误警告。现在应该说这不是骗局了。
  • 对于fillna 它说here "..它不能是一个列表" 但是对于replace 没有这样的要求
  • @Ma0 确实如此,但替换不允许 np.nan 被替换,看起来。

标签: python pandas dataframe nan


【解决方案1】:

有点脏,但我用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

【讨论】:

    猜你喜欢
    • 2014-07-07
    • 2018-03-25
    • 1970-01-01
    • 2015-08-04
    • 1970-01-01
    • 2019-05-20
    • 1970-01-01
    • 2015-10-12
    • 2019-05-09
    相关资源
    最近更新 更多