我有6个数据帧(Patients,Test1,Test2,Test3,Test4,Test5)通过ID键链接。你知道吗
“患者”数据框中的每一行表示一个包含唯一ID的患者,每行有200000多名患者。你知道吗
测试数据帧中的每一行表示一天的测试结果。测试数据帧的列有ID、DATE、Test\u UNIT和Test\u RESULT。每个测试数据帧包含6000000到7000000行。你知道吗
我想循环遍历Patients数据帧中的所有ID,并在每次迭代中使用ID从5个测试数据帧中的每一个提取相关的测试数据,并对它们进行一些处理。你知道吗
如果我这样做了
for i in range(len(Patients)):
ind_id = Patients.ID.iloc[i]
ind_test1 = Test1[Test1['ID'] == ind_id]
ind_test2 = Test2[Test2['ID'] == ind_id]
ind_test3 = Test3[Test3['ID'] == ind_id]
ind_test4 = Test4[Test4['ID'] == ind_id]
ind_test3 = Test5[Test5['ID'] == ind_id]
每次迭代大约需要3.6秒。你知道吗
当我尝试使用Numpy接口来加速它时。你知道吗
Patients_v = Patients.values
Test1_v = Test1.values
Test2_v = Test2.values
Test3_v = Test3.values
Test4_v = Test4.values
Test5_v = Test5.values
for i in range(len(Patients_v)):
ind_id = Patients_v[i, ID_idx]
ind_test1 = Test1_v[Test1_v[:, 0] == ind_id]
ind_test2 = Test2_v[Test2_v[:, 0] == ind_id]
ind_test3 = Test3_v[Test3_v[:, 0] == ind_id]
ind_test4 = Test4_v[Test4_v[:, 0] == ind_id]
ind_test5 = Test5_v[Test5_v[:, 0] == ind_id]
每次迭代大约需要0.9秒。你知道吗
我怎样才能加快速度?你知道吗
谢谢
目前还不清楚你想要什么样的产出。我们只能假设您需要特定于患者的数据帧。你知道吗
在任何情况下,当前代码都必须在内存中保存所有数据帧。这是低效的。例如,看看generator functions:
<强>1。创建所有ID的列表
<强>2。创建主数据帧
3岁。创建生成器函数,生成特定于患者的数据帧以供进一步处理
相关问题 更多 >
编程相关推荐