2017-09-23 6 views
0

일부 셀에 NaN 값이있는 dataframe problem_data가 있습니다. 다음 코드를 실행했습니다. Pandas 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[problem_data['level_type'] == 5.0]을 실행하면

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

는, 출력은 이전과 동일했다.

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