2017-09-23 13 views
0

いくつかのセルにNaN値を持つdataframe problem_dataがあります。私は次のコードを実行しました。パンダの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

関連する問題