Pandas聚合函数默认情况下不会跳过NaN值

时间:2018-04-12 10:48:25

标签: python null max

我的数据如下:

     current_rate current_balance  cure_g4  char_value_aa503  \
38           5.49        10403.65      NaN           -9829.0   
61           1.24       825530.40      NaN               NaN   
62           1.34       201467.68      NaN        -9999998.0   
63           3.24        39907.76      NaN            4363.0   
64           1.75       114109.41      NaN               NaN   
65           1.59       131513.37      NaN               NaN   
66           3.25        62882.63      NaN            1302.0   

这是一个名为base_varlist4的数据框,所有列都在名为varlist4的列表中。我想获取列的最大值,但看起来NaN值正在阻碍。

奇怪的是,char_value_aa503出现了正确的MAX值。但是,这是另一栏:

In [85]: base_varlist4['total_imp_pma']
Out[85]: 
38       0.2
61       0.0
62       0.0
63       NaN
64       0.0
65       0.0
66       NaN
71       8.4
72     117.7
100      NaN
101      NaN
106      NaN
122      0.0
123      NaN
125      NaN

这是我正在使用的代码。

output_max_temp=base_varlist4.groupby('obs_date').max(skipna=True)

#reset obs_date to be treated as a column rather than an index
output_max_temp.reset_index()

#reshape temporary output to have 2 columns corresponding to variable and value
output_max=pd.melt(output_max_temp, id_vars='obs_date', value_vars=varlist4)

这是我的代码。即使我明确说明skipna=True,我的输出仍然如下所示:

 In [86]: output_max
Out[86]: 
    obs_date            variable        value
0        NaN          reserve_l6       107270
1        NaN          reserve_l5       107270
2        NaN          reserve_l4       107270
3        NaN          reserve_l3       107270
4        NaN          reserve_l2       107270
5        NaN         reserve_l12       107270
6        NaN         reserve_l11       107270
7        NaN          reserve_l1       107270
8        NaN          reserve_l0       107270
9        NaN      remaining_term          420
10       NaN            possdate          NaN
11       NaN              pd_pit            1
12       NaN  original_valuation          NaN
13       NaN         new_arrears      62.3255
14       NaN          ndspcii_l1           92
15       NaN          reserve_l7       107270
16       NaN         reserve_l10       107270
17       NaN          reserve_l8       107270
18       NaN        pd_ttc_floor            1
19       NaN       reserve_limit       107270
20       NaN                  ui      147.163
21       NaN       total_imp_pma          NaN
22       NaN              pd_ttc            1
23       NaN          pd_pit_moc            1
24       NaN         indexed_val   2.1058e+06
25       NaN                  ii       5805.3
26       NaN            elbe_amt      34033.7
27       NaN             ead_pit       999483
28       NaN          reserve_l9       107270
29       NaN           el_for_rc      34033.7
..       ...                 ...          ...
52       NaN          balance_l1          NaN
53       NaN          balance_l0  1.01384e+06
54       NaN             balance    99,994.97
55       NaN         ave_ndspcii         52.5
56       NaN           ave_e1b10        898.5
57       NaN      arrsbal_absl12      2010.37
58       NaN         age_of_loan          333
59       NaN          balance_l9          NaN
60       NaN           max_e1b08            6
61       NaN      billing_amount      7495.05
62       NaN  btl_prop_arrears_2            0
63       NaN           max_e1a09            8
64       NaN      marked_ltv_nsa      96.7986
65       NaN    latest_valuation     1.95e+06
66       NaN     indexed_val_nsa   2.1058e+06
67       NaN              income  2.94642e+06
68       NaN               e1a10          999
69       NaN               e1a09            8
70       NaN              def_pm            0
71       NaN              def_g4            1
72       NaN              def_bk            1
73       NaN             def_180            1
74       NaN        current_rate         5.49
75       NaN     current_balance  1.01384e+06
76       NaN             cure_g4          NaN
77       NaN    char_value_aa503       186413
78       NaN  btl_prop_arrears_4            0
79       NaN  btl_prop_arrears_3            0
80       NaN  btl_prop_arrears_1            0
81       NaN           lgd_dt_ec     0.657523

如您所见,total_imp_pma显示为NaN,即使char_value_aa503正常。我不知道为什么 - 我也检查了源数据,并且没有错误的单元格或其他......

有解决方法吗?

0 个答案:

没有答案