2017-05-08 88 views
0

我有以下数据框:设置单个单元格的值为NaN与熊猫数据帧取代

In [96]: df1 
Out[96]: 
    a b c 
    0 1 1 26 
    1 1 2 38 
    2 1 3 17 

如果我用替换法来对整个数据帧它的工作原理替换楠值:

In [97]: df1.replace(2, np.nan, inplace=True) 

In [98]: df1 
Out[98]: 
    a b c 
0 1 1.0 26 
1 1 NaN 38 
2 1 3.0 17 

但是,如果我试图取代与南单个单元格值它不工作:

In [101]: df1.iloc[1:2,0:1].replace(1, np.nan, inplace=True) 

In [102]: df1 
Out[102]: 
    a b c 
0 1 1.0 26 
1 1 NaN 38 
2 1 3.0 17 

这种行为的原因是什么?

+4

试试这个:'df1.iloc [1:2,0:1] = np.nan'或者干脆'df1.iloc [1,1] = NP .nan' – MaxU

+4

'df1.iloc [1:2,0:1]'是副本。即使你传递'inplace = True',它也会执行拷贝的操作。 – ayhan

回答

1

除了伟大的评论。你可以放弃inplace=True,只是重新分配的结果

df1.iloc[1:2, 0:1] = df1.iloc[1:2, 0:1].replace(1, np.nan) 

df1 

    a b c 
0 1.0 1.0 26 
1 NaN NaN 38 
2 1.0 3.0 17