如何替换熊猫数据帧中的值,以遵守索引对齐



我想将数据帧中的一些缺失值替换为其他一些值,保持索引对齐。例如,在以下数据帧中

import pandas as pd
import numpy as np
df = pd.DataFrame({'A':np.repeat(['a','b','c'],4), 'B':np.tile([1,2,3,4],3),'C':range(12),'D':range(12)})
df = df.iloc[:-1]
df.set_index(['A','B'], inplace=True)
df.loc['b'] = np.nan
df
      C   D
A B        
a 1   0   0
  2   1   1
  3   2   2
  4   3   3
b 1 NaN NaN
  2 NaN NaN
  3 NaN NaN
  4 NaN NaN
c 1   8   8
  2   9   9
  3  10  10

我想用"c"行的相应索引替换与"b"行匹配的缺失值。结果应如下所示

      C   D
A B        
a 1   0   0
  2   1   1
  3   2   2
  4   3   3
b 1   8   8
  2   9   9
  3   10  10
  4 NaN NaN
c 1   8   8
  2   9   9
  3  10  10
您可以将

fillna 与相关cto_dict的值字典一起使用,如下所示:

# you can of course use .loc
>>> df.ix['b'].fillna(value=df.ix['c'].to_dict(), inplace=True)
    C   D
B
1   8   8
2   9   9
3  10  10
4 NaN NaN

结果:

>>> df
      C   D
A B
a 1   0   0
  2   1   1
  3   2   2
  4   3   3
b 1   8   8
  2   9   9
  3  10  10
  4 NaN NaN
c 1   8   8
  2   9   9
  3  10  10

最新更新