【问题标题】:Fillna with mode column by column逐列填充模式
【发布时间】:2021-07-26 11:31:58
【问题描述】:

我得到了一些这样的:x:用户 y:评级

这显示用户 1 用 4.0 评价电影 1 用户 1 不评价电影 2 用户 1 用 1.0 评价电影 3 等等

       rating
movieId 1      2      3      4     5   .....
userID
1      4.0    NaN     1.0   4.1    NaN
2      NaN      2     5.1   NaN    NaN
3      3.0    2.0     NaN   NaN    NaN
4      5.0    NaN     2.8   NaN    NaN

如何通过 Movie 使用模式填充 NaN 值

示例 movieId 1 的评分为 4.0、NaN、3.0、5.0 ..... 然后用 4.0(模式)填充 NaN,我尝试使用 fillna

rating.apply(lambda x: x.fillna(x.mode().item()))

【问题讨论】:

    标签: python matrix mode fillna


    【解决方案1】:

    试试

    rating.apply(lambda x: x.fillna(x.mode()), axis=0)
    

    指定axis=0

    或者,

    import numpy as np
    import pandas as pd
    
    def fillna_mode(df, cols_to_fill):
        for col in cols_to_fill:
            df[col].fillna(df[col].mode()[0], inplace=True)
    
    sample = {1: [4.0, np.nan,1.0, 4.1, np.nan],
              2: [np.nan, 2, 5.1, np.nan, np.nan]}
    
    rating = pd.DataFrame(sample)
    
    print(rating)
    
          1 2
    0   4.0 NaN
    1   NaN 2.0
    2   1.0 5.1
    3   4.1 NaN
    4   NaN NaN
    
    fillna_mode(rating, [1, 2])
    

    输出

        1   2
    0   4.0 2.0
    1   1.0 2.0
    2   1.0 5.1
    3   4.1 2.0
    4   1.0 2.0
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-08-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-26
      • 1970-01-01
      相关资源
      最近更新 更多