2016-09-25 63 views
0

我試着做一些事情的熊貓數據幀如下:做些事情來的每一行上的熊貓數據幀

如果說第2行有一個「南」中的「開始」列的值,那麼我就可以全部更換與「999999」

if pd.isnull(dfSleep.ix[2,'start']): 
    dfSleep.ix[2,:] = 999999 

上面的代碼工作,但我想這樣做的每一行的行條目,香港專業教育學院試圖用一個替代「2」「:」但是,這並不工作

if pd.isnull(dfSleep.ix[:,'start']): 
    dfSleep.ix[:,:] = 999999 

,我嘗試過這樣的

for row in df.iterrows(): 
    if pd.isnull(dfSleep.ix[row,'start']): 
     dfSleep.ix[row,:] = 999999 

但是再次沒有運氣,有什麼想法?

回答

2

我覺得row在你的做法是不是行的索引。它的數據幀的一排

您可以使用它代替:

for row in df.iterrows(): 
    if pd.isnull(dfSleep.ix[row[0],'start']): 
     dfSleep.ix[row[0],:] = 999999 
1

UPDATE:

In [63]: df 
Out[63]: 
    a b c 
0 0 3 NaN 
1 3 7 5.0 
2 0 5 NaN 
3 4 1 6.0 
4 7 9 NaN 

In [64]: df.ix[df.c.isnull()] = [999999] * len(df.columns) 

In [65]: df 
Out[65]: 
     a  b   c 
0 999999 999999 999999.0 
1  3  7  5.0 
2 999999 999999 999999.0 
3  4  1  6.0 
4 999999 999999 999999.0 

您可以使用量化方法(.fillna()法):

In [50]: df 
Out[50]: 
    a b c 
0 1 8 NaN 
1 8 8 6.0 
2 5 2 NaN 
3 9 4 1.0 
4 4 2 NaN 

In [51]: df.c = df.c.fillna(999999) 

In [52]: df 
Out[52]: 
    a b   c 
0 1 8 999999.0 
1 8 8  6.0 
2 5 2 999999.0 
3 9 4  1.0 
4 4 2 999999.0 
+0

是的,但我需要在該行變爲999999的所有條目 –