2016-07-26 47 views
1

我對使用生命線進行KM估計有一個挑戰。我有一個稱爲工人類型(全職,兼職等)的變量列,我想將KM估計值分組,然後輸出到CSV文件。這裏有一個片段:在生命線中獲取生存函數估計值按屬性級別

worker_types = df['Emp_Status'].unique() 

for i, worker_type in enumerate(worker_types): 
    ix = df['Emp_Status'] == worker_type 
    kmf.fit(T[ix], C[ix]) 
    kmf.survival_function_['worker'] = worker_type 
    #print kmf.survival_function_ 
    kmf.surviva 

l_function_.to_csv('C:\Users\Downloads\test.csv') 

當我使用打印功能,我得到每worker_type的KM估計的每一次迭代;但是,當試圖導出到csv文件時,我只能得到工人類型的最新估計值。

我已閱讀生命線文檔,並看到了繪製不同層次的示例,但不知道如何橋接以輸出到csv

+2

你能否修正你的代碼的縮進? – bernie

+0

您應該提供指向文檔和DYA的鏈接(定義您的首字母縮略詞)。 – tmthydvnprt

回答

0

您可以在循環頂部打開追加模式的文件,然後追加每一行,例如:

worker_types = df['Emp_Status'].unique() 
with open('C:/Users/Downloads/test.csv', 'a') as fou: 
    for i, worker_type in enumerate(worker_types): 
     ix = df['Emp_Status'] == worker_type 
     kmf.fit(T[ix], C[ix]) 
     kmf.survival_function_['worker'] = worker_type 
     if i == 0: 
      kmf.survival_function_.to_csv(fou) # write header on first iteration 
     else: 
      kmf.survival_function_.to_csv(fou, header=False) 

邊注:請不要使用向後斜槓內的Python的Windows路徑。而是使用正斜槓。

+0

感謝伯尼的幫助,那就是訣竅。我對這個馬虎的帖子表示歉意。這是我的第一個。 – Travis1585

+0

非常歡迎您,先生。不用擔心這個帖子很好。 – bernie

+0

嗨,伯尼,我可以問一個跟進問題嗎?我還嘗試將survival_function_df的每次迭代追加到另一個數據幀,但結果數據幀只有Emp狀態的最後一次迭代。你能指出我做錯了什麼嗎? '數據= pd.DataFrame() worker_types = DF [ '一致,如Emp_status']獨特() 對於i,worker_type在枚舉(worker_types): IX = DF [ '一致,如Emp_status'] == worker_type kmf.fit (T [ix],C [ix]) kmf.survival_function _ ['worker'] = worker_type data.append(kmf.survival_function_)' – Travis1585