如何用其他系列替换pandas数据帧的子集

use*_*726 2 python data-analysis missing-data pandas

我认为这是一个微不足道的问题,但我不能让它发挥作用.

d = {   'one': pd.Series([1,2,3,4], index=['a', 'b', 'c', 'd']),
            'two': pd.Series([np.nan,6,np.nan,8], index=['a', 'b', 'c', 'd']),
            'three': pd.Series([10,20,30,np.nan], index = ['a', 'b', 'c', 'd'])}         
   ?    
df = pd.DataFrame(d)
df

    one     three   two
a   1       10.0    NaN
b   2       20.0    6.0
c   3       30.0    NaN
d   4       NaN     8.0
Run Code Online (Sandbox Code Playgroud)

我的系列:

?fill = pd.Series([30,60])
Run Code Online (Sandbox Code Playgroud)

我想替换一个特定的列,让它成为'两个'.我的系列名为fill,其中'two'列符合条件:是Nan.残友对我有帮助吗?我想要的结果:

df

    one     three   two
a   1       10.0    30
b   2       20.0    6.0
c   3       30.0    60
d   4       NaN     8.0
Run Code Online (Sandbox Code Playgroud)

jez*_*ael 6

我认为你需要loc使用isnull代替1 numpy array从创建fillSeries.values:

df.loc[df.two.isnull(), 'two'] = fill.values
print (df)
   one  three   two
a    1   10.0  30.0
b    2   20.0   6.0
c    3   30.0  60.0
d    4    NaN   8.0
Run Code Online (Sandbox Code Playgroud)