首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Fillna,模式逐列

Fillna,模式逐列
EN

Stack Overflow用户
提问于 2021-05-04 13:38:17
回答 1查看 30关注 0票数 0

我得到了一些像这样的东西: x: Users y:评级

这显示了用户1对具有4.0的电影1进行评级,用户1不对电影2进行评级,用户1对具有1.0的电影3进行评级,依此类推

代码语言:javascript
复制
       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填充NaNs (模式)我试着用fill NaNs

代码语言:javascript
复制
rating.apply(lambda x: x.fillna(x.mode().item()))
EN

回答 1

Stack Overflow用户

发布于 2021-05-04 13:57:50

试一试

代码语言:javascript
复制
rating.apply(lambda x: x.fillna(x.mode()), axis=0)

指定axis=0

或者,

代码语言:javascript
复制
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)
代码语言:javascript
复制
print(rating)
代码语言:javascript
复制
      1 2
0   4.0 NaN
1   NaN 2.0
2   1.0 5.1
3   4.1 NaN
4   NaN NaN
代码语言:javascript
复制
fillna_mode(rating, [1, 2])

输出

代码语言:javascript
复制
    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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67379355

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档