2016-10-23 5 views
0

私は、インデックスではなく、いくつかの基準によって、変更したいデータを選択しています。また、DataFrameには多数のユーザーの番号が含まれていますが、1人のユーザーには時間の異なる多くの情報があります。今、私は同じユーザーの情報を選択し、時間順にデータを並べ替えることにします。私の目的のために、私はNANを数字に置き換えたいと思っています。パンダで選択したセルの値を設定します。DataFrame

enter image description here

あなたが写真で見ることができるように、D'ナンは、数2で満たされているが、df'nanは変更されません。

import pandas as pd 
import numpy as np 
import copy 
from datetime import datetime 
df=pd.DataFrame({'User':[1,2,3,4,3,5],'Income':[5,6,np.NAN,8,9,np.NAN], 
    'Time':[datetime(2001,1,1),datetime(2001,1,2),datetime(2001,1,3),       datetime(2001,1,4),datetime(2001,1,5),datetime(2001,1,6)]}, 
      columns=['User','Time','Income']) 
d=df[df['User']==3].sort_values(by='Time').copy() 
for index in d.index: 
    if pd.isnull(d.ix[index]).any(): 
     d.loc[index,'Income']=2 
print(d) 
df 
+0

あなたが '' df.Income.fillna(2、インプレース=真)の後にありますか? – MaxU

+0

あなたのコードをテキストとして投稿してください。コピーして貼り付けることができます。 – MaxU

+0

df.Income.fillna(2、inplace = True) '' 'の後にありますが、結果に変更はありません。ところで、私は上記のコードを貼り付けました。 – han1219

答えて

0

これを試してみてください:

In [58]: df 
Out[58]: 
    User  Time Income 
0  1 2001-01-01  5.0 
1  2 2001-01-02  6.0 
2  3 2001-01-03  NaN 
3  4 2001-01-04  8.0 
4  3 2001-01-05  9.0 
5  5 2001-01-06  NaN 

In [59]: df.Income.fillna(2, inplace=True) 

In [60]: df 
Out[60]: 
    User  Time Income 
0  1 2001-01-01  5.0 
1  2 2001-01-02  6.0 
2  3 2001-01-03  2.0 
3  4 2001-01-04  8.0 
4  3 2001-01-05  9.0 
5  5 2001-01-06  2.0 
+0

私はあなたがdfを操作することができます知っている。しかし、私の疑問は、私はdfを直接操作することができないということです。異なるユーザーのため、ナンとは異なる値があり、データdfは非常に大きい。 – han1219

+0

私は問題を発見しました。あなたは次のコードが異なる理由を知っていますか? – han1219

+0

'' 'import pandas as pd import numpy as np インポートコピー d = pd.DataFrame({'a:[3,1,2]、' b ':[6,4,6]}) d = d.sort_values(by = 'b'、inplace = False) #c = d [d ['a'] == 1] .copy()# #c.loc [1、 'a'] = #d [1、 'a']が変更されない理由 c:loc [1、 'a'] = 11# d – han1219

関連する問題