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