python - Pandas fillna 方法无法就地工作

标签 python pandas dataframe fillna

我有一个数据框 Problem_data,它在某些单元格中具有 NaN 值。我运行了以下代码。

problem_data[problem_data['level_type'] == 5.0]

结果是这样的:

      problem_id    level_type  points  tags 
5    prob_1479    5.0        NaN    NaN 
31   prob_2092    5.0        NaN    NaN 
38   prob_4395    5.0        NaN    combinatorics,constructive algorithms,dfs 
43   prob_5653    5.0        NaN    NaN 
48   prob_2735    5.0       2750.0  NaN 
52   prob_1054    5.0       2000.0  combinatorics,dp
64   prob_2610    5.0        NaN    NaN
65   prob_1649    5.0        NaN    NaN
70   prob_4675    5.0        NaN    dp,games
74   prob_445     5.0        NaN    NaN
81   prob_6481    5.0       2500.0  combinatorics,dp,implementation,number theory
134  prob_2964    5.0       2500.0  games
161  prob_948     5.0       2000.0  dp,games
182  prob_642     5.0        NaN    NaN 

然后,我运行以下命令来填充“points”列的 NaN。

problem_data.loc[problem_data['level_type'] == 5.0 , 'points'].fillna(value=2500, inplace=True)

当我再次运行 problem_data[problem_data['level_type'] == 5.0] 时,输出与之前相同。

你能说出为什么 fillna() 在这里不起作用吗?我可以做什么来纠正它?

最佳答案

fillna 不适用于数据帧子切片。你会想要:

mask = problem_data['level_type'] == 5.0
problem_data.loc[mask, 'points'] = problem_data.loc[mask, 'points'].fillna(value=2500)

problem_data.loc[mask, 'points'] 
5      2500.0
31     2500.0
38     2500.0
43     2500.0
48     2750.0
52     2000.0
64     2500.0
65     2500.0
70     2500.0
74     2500.0
81     2500.0
134    2500.0
161    2000.0
182    2500.0
Name: points, dtype: float64

关于python - Pandas fillna 方法无法就地工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46377263/

相关文章:

python - 具有可变数量占位符的安全 INSERT

python - 如何优雅地找到一个角度是否在一个范围之间?

python - 抓取 : SSL: CERTIFICATE_VERIFY_FAILED error for http://en. wikipedia.org

python - 检查 pandas 条件行选择中数据帧的一部分的长度

python - pandas Series 和整个 DataFrame 之间的相关性

python - 仅在 Pandas python 中索引和选择找到的列

Python Matplotlib FuncAnimation.save() 只保存 100 帧

python - 如何修复 TypeError : 'Series' objects are mutable, 因此它们无法被散列

python - 对 Pandas 数据框的列进行排序

python - 在列中字典内的值上删除数据框上的重复项