2017-07-29 77 views
0

我想基於if條件自動更改pandas列缺失值的名稱,最好使用'string_name_number'。數字應該從1開始並以最後一個缺失值結束。我已決定如下設置我的循環以從字符串中選擇數據。通過佔位符循環創建熊貓系列

然而,缺失列的結果(df2)保持不變。如下; - 被訪者i,jakson,被訪者i,被訪者i,jane,被訪者i,mary,...

我期望看到以下結果(df2); - 被訪者1,jakson,被訪者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_的方法調用,但是對方法的引用。這個表達總是「真」。 – 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