用最小的其他系列替换数据帧中的np.nan

时间:2016-01-08 20:12:19

标签: python pandas

这是一个很容易的我确定但是我无法正确获得df.loc的语法。

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

我想将'数据'中的所有np.nan替换为标签'a'和'b'中的最小值。请注意,有时其中一个值也会丢失(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

1 个答案:

答案 0 :(得分:3)

您可以fillna()来自min()

df2['data'].fillna(df2[['a', 'b']].min(axis=1), inplace=True) 结果
karma-jasmine-html-reporter