Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 生命线中按属性级别分组求生存函数估计_Python_Pandas_Dataframe_Lifelines - Fatal编程技术网

Python 生命线中按属性级别分组求生存函数估计

Python 生命线中按属性级别分组求生存函数估计,python,pandas,dataframe,lifelines,Python,Pandas,Dataframe,Lifelines,我在使用生命线估算公里数方面遇到了挑战。我有一个名为worker type(全职、兼职等)的变量列,我希望将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.

我在使用生命线估算公里数方面遇到了挑战。我有一个名为worker type(全职、兼职等)的变量列,我希望将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')
当我使用打印功能时,我得到每个
工人类型的每一次KM估计迭代;但是,当尝试导出到
csv
文件时,我只得到工人类型的最后估计值


我已经阅读了生命线文档,并看到了不同级别打印的示例,但不确定如何将其连接到导出到
csv

您可以在循环顶部以追加模式打开文件,然后追加每一行,例如:

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路径使用向后斜杠。改为使用前斜杠。

您可以在循环顶部以追加模式打开文件,然后追加每一行,例如:

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路径使用向后斜杠。请改为使用前斜杠。

请修复代码缩进?您应该提供指向docs和DYA(定义首字母缩略词)的链接。请修复代码缩进?您应该提供指向docs和DYA(定义首字母缩略词)的链接。感谢您的帮助,Bernie,这就成功了。我为这篇草率的文章道歉;这是我的第一次,不客气,先生。不用担心那篇帖子,很好。嗨,伯尼,我能问一个后续问题吗?我还尝试将survival_函数的每次迭代都附加到另一个数据帧,但结果数据帧只有Emp状态的最后一次迭代。你能帮我指出我做错了什么吗
data=pd.DataFrame()worker\u types=df['Emp\u Status'].unique()对于i,枚举中的worker\u type(worker\u types):ix=df['Emp\u Status']==worker\u type kmf.fit(T[ix],C[ix])kmf.survival\u函数\ worker\u类型数据。append(kmf.survival\u函数)
@Travis1585:您需要确保
.append()
操作正在
for
循环中进行。感谢您的帮助,Bernie,成功了。我为这篇草率的文章道歉;这是我的第一次,不客气,先生。不用担心那篇帖子,很好。嗨,伯尼,我能问一个后续问题吗?我还尝试将survival_函数的每次迭代都附加到另一个数据帧,但结果数据帧只有Emp状态的最后一次迭代。你能帮我指出我做错了什么吗
data=pd.DataFrame()worker\u types=df['Emp\u Status'].unique()对于i,枚举中的worker\u type(worker\u types):ix=df['Emp\u Status']==worker\u type kmf.fit(T[ix],C[ix])kmf.survival\u函数\ worker\u类型数据。append(kmf.survival\u函数)
@Travis1585:您需要确保
.append()
操作发生在
for
循环中。