Python 用模式逐列填充

Python 用模式逐列填充,python,matrix,mode,fillna,Python,Matrix,Mode,Fillna,我有一些这样的:x:y:Ratings 这显示了用户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

我有一些这样的:x:y:Ratings

这显示了用户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
我如何用电影模式填充NaN值

示例电影ID 1的评级为4.0、NaN、3.0、5.0。。。。。然后用4.0(模式)填充NaNs,我尝试使用fillna

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

指定轴=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)
输出

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