2017-09-23 77 views
0

我有一個數據框problem_data有一些單元格中的NaN值。我運行了下面的代碼。熊貓fillna方法不工作

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 

然後,我跑到下面的命令,以填補 '點' 列的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()在這裏不起作用嗎?我能做些什麼來糾正它?

回答

0

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 
+0

謝謝!有效。 – Suyash