问题描述
我得到了一些这样的:x:用户 y:评级
这显示用户 1 给电影 1 评分 4.0 用户 1 没有给电影 2 评分 用户 1 给电影 3 评分 1.0 等等
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 值
示例 movieId 1 的评分为 4.0、NaN、3.0、5.0 ..... 然后用 4.0(mode) 填充 NaN,我尝试使用 fillna
rating.apply(lambda x: x.fillna(x.mode().item()))
解决方法
试试
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]}
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