Python 用模式逐列填充
我有一些这样的:x:y:Ratings 这显示了用户1用4.0评价电影1用户1不评价电影2用户1用1.0评价电影3,依此类推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
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