2017-07-29 3 views
0

pandasカラムの欠損値の名前は、if条件に基づいて、できれば 'string_name_number'を使用して自動的に変更したいと考えています。数字は1つから始まり、最後の欠損値で終了する必要があります。文字列からデータを選択するためにループを次のように設定することにしました。プレースホルダをループしてパンダシリーズを作成する

ただし、欠落した列の結果(df2)は同じままです。次のように; - 回答者i、jakson、回答者i、回答者i、ジェーン、回答者i、メアリー、...

私は次の結果(df2)を期待していました。・応募者1、ジャクソン、応募者2、応募者3、ジェーン、応募者4、マリー、...

お手伝いをしてください。

import pandas as pd 

df = pd.read_csv('232 responses.csv', sep=',',header=0, parse_dates=True, 
       index_col='Timestamp') 

missing_rows_list = list(range(0, len (df))) 

for i in missing_rows_list: 
    i = 1 
    df2 = [df['Name (optional)']\ 
      .replace(np.nan, 'respondent {d[i]}'\ 
      .format(d=missing_rows_list)) if pd.isnull(df['Name (optional)']) \ 
      else df['Name (optional)'] == word in df['Name (optional)']] 
    i += 1 
+0

: 'DF [「名(オプション)」] isnull'が_not_方法であり、コールではなく、メソッドへの参照です。この式は常に「True」です。 – DyZ

+0

私はそれをチェックして、あなたに戻ってみましょう。 – Gwiji

+0

pd.isnull(df ['Name(optional)'])に合わせて、それがメソッド呼び出しであることを望みます。 – Gwiji

答えて

0

私は、これはそれをヘンデルべきだと思いますし、より便利なアプローチである:あなたが任意の更なるアドバイス求める前に

df=pd.DataFrame({"a":["test1","test2","test3","test4",np.NAN],"b":["test5",np.NAN,"test7",np.NAN,"test9"]}) 

#Create the respondent + inex number format --> you can also save this in an extra df column if you like 
a=["respondent"]*len(df.index) 
b=list(df.index) 
c=["{0}{1}".format(a_,b_)for a_,b_ in list(zip(a,b))] 

#Replace the missing values 
for i in df.columns: 
    mask = df[i].isnull() 
    df[i].mask(mask,c, inplace=True) 

print(df) 



      a   b 
0  test1  test5 
1  test2 response1 
2  test3  test7 
3  test4 response3 
4 response4  test9 
関連する問題