pandas fillna使用多个标准对数据进行子选择

时间:2016-08-22 15:52:51

标签: python pandas nan multiple-conditions

我有一个数据框。我正在关注的两个主要栏目是“生存”和“alive_at_1”。我想填充'alive_at_1'中缺失的值,只有零,只有生存期少于12(月)

我做了一个子选择:

df[(df.alive_at_1.isnull()) & (df.survival <= 12)]

 survival  still_alive  age_at_heart_attack  pericardial_effusion  fractional_shortening  \
   10.0          0.0                 57.0               0.0         0.24
    9.0          0.0                 73.0               0.0         0.12
   12.0          0.0                 67.0               1.0         0.11   
   12.0          0.0                 61.0               1.0         0.19 

epss  lvdd  wall_motion_score  wall_motion_index  \
14.8   5.26              18.00               1.38   
NaN    6.78              16.67               1.39   
10.3   4.68              11.00               1.00   
13.2   5.04              19.00               1.73   

 alive_at_1  
NaN  
NaN  
NaN  
NaN  

现在我只想填写'alive_at_1'中的那些NaN,而不是'epss'中的NaN。

我尝试了这些方法(以及它们的变体)并且它们不起作用(我已经尝试了.ix.loc):

df.ix[(df.alive_at_1.isnull()) & (df.survival <= 12), 'alive_at_1'].fillna(0, inplace = True)

df.ix[(df.alive_at_1.isnull()) & (df.survival <= 12), -1].fillna(0, inplace = True)

df.ix[(df.alive_at_1.isnull()) & (df.survival <= 12), 'alive_at_1'] = 0

df.ix[(df.alive_at_1.isnull()) & (df.survival <= 12)].fillna({'alive_at_1':0}, inplace = True)

我的问题是

  • 最好的方法是什么(我不想只是手动输入索引,但如果这是我唯一的方式)

  • 为什么我尝试不工作的方式?

谢谢!

0 个答案:

没有答案