【问题标题】:Filling NA values with two types of data用两种类型的数据填充 NA 值
【发布时间】:2021-05-20 05:02:02
【问题描述】:

我使用以下代码来清理我正在处理的数据集,该数据集有两个具有不同平均值的“类型”。代码运行没有错误,但数据框没有更新。

wines = pd.read_csv('winequalityN.csv') #Data import
na_list = wines.isna().sum() 
cols_na = na_list[na_list != 0] #Columns that have NA values
means = wines.groupby('type').mean() #Means values for each category grouped by white type (red or white)

# Filling NA values by mean values for red and white 
for t in ['red','white']:
    for c in cols_na.keys():
        wines.loc[wines.type == t, c].fillna(means.loc[t,c], inplace=True)

【问题讨论】:

  • 这能回答你的问题吗? Pandas how can 'replace' work after 'loc'?。特别是this answer.
  • 几乎,如果我只写类似 wines.loc[wines.type == t, c] = 5 的东西,数据框似乎不会被切片。我认为这与 fillna 有关。
  • 谢谢,在您的帮助下解决了!

标签: python pandas dataframe fillna


【解决方案1】:

好的问题解决了,感谢留下评论。请改用以下 for 循环:

      for t in ['red','white']:
          m = wines['type'] == t
              for c in cols_na.keys():
                  wines.loc[m, c] = wines.loc[m, c].fillna(means.loc[t,c])

这里的 inplace=True 注释是不必要的。

谢谢!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-03-17
    • 2019-05-12
    • 1970-01-01
    • 2017-06-02
    • 1970-01-01
    • 2022-08-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多