2016-01-08 53 views
3

這是一個簡單的問題,我確定但我無法獲得df.loc的語法。用數據框中的np.nan替換其他系列中的最小值

import pandas as pd 
import numpy as np 

d = { 'data' : [4, 2, 7, np.nan, 7, 6, 5, np.nan, 6, 3, np.nan, 2], 
'a' : [4, 2, 7, 9, 7, 6, 5, 4, 6, 3, np.nan, 2], 
'b' : [4, 2, 7, 11, 7, 6, 5, 2, 6, 3, 3, 2]} 

df2 = pd.DataFrame(d) 

df2.loc[df2.data == np.nan], min(['a', 'b']) 

print df2 

我想用從標籤「A」的最小值「數據」和「b」所有np.nan。注意有時候這些值中的一個也會丟失(np.nan)。

的結果應該是:

 a b data 
0 4 4  4 
1 2 2  2 
2 7 7  7 
3 9 11  9 
4 7 7  7 
5 6 6  6 
6 5 5  5 
7 4 2  2 
8 6 6  6 
9 3 3  3 
10 NaN 3  3 
11 2 2  2 

回答

3

您只需fillna()min()結果:

df2['data'].fillna(df2[['a', 'b']].min(axis=1), inplace=True) 
+1

一個更好的方法,更有意義。謝謝 – noblerthanoedipus

相關問題