2016-09-25 20 views
0

イム上のすべての行に何かを実行します。は、次のようにパンダのデータフレームに何かをしようとしているパンダのデータフレーム

行2は、「スタート」欄の「ナン」の値を持っていると言うならば、私はすべてを置き換えることができます「999999」

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

上記のコードの作品を​​私はすべての行のためにそれをしたいとの行エントリは、IVEはで「2」を交換しようとした「:」が、それは

if pd.isnull(dfSleep.ix[:,'start']): 
    dfSleep.ix[:,:] = 999999 
を動作しません。

とiveはこのようなものを試しました

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

でも、運がよろしいですか?

答えて

2

私はあなたのアプローチでrowは、行インデックスはないと思います。それはあなたが代わりにこれを使用することができますDATAFRAME

の行です:

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になっ必要 –

関連する問題