提问人:Imane Kwik 提问时间:12/15/2022 最后编辑:TimusImane Kwik 更新时间:12/16/2022 访问量:23
如何创建一个包含 4 个大小为 (n,3) 的数据帧列表,其中 3 列是 3 个嵌套列表?
How to create a list of 4 dataframes with size (n,3) with the 3 columns being 3 nested lists?
问:
对于我的应用程序,我有 3 个列表(、 和 ),每个列表由 4 个不同大小的嵌套列表组成(每个嵌套列表都包含对患者的观察,因此总共有 4 个患者)。start_timestamps
end_timestamps
labels
现在我想创建一个包含 4 个数据帧(每个患者一个)的列表,每个数据帧的大小为 (n,3),n 是观测值的数量,3 是 和 列。start_time
end_time
labels
我正在考虑用列表推导来做到这一点:
patients = [
[pd.DataFrame(list(zip(start, end, label)))
for start in patient for end in patient for label in patient]
for patient in start_timestamps
for patient in end_timestamps
for patient in labels
]
但是,这甚至没有给我输出,运行时间太长了。
有 python 专家可以帮助我吗?
答:
0赞
Hidi Eric
12/15/2022
#1
如果每个列表中的属性顺序相同,则可以使用以下行的列表推导来实现此目的:
dfs = [
pd.DataFrame([[st, et, l]
for st, et, l in zip(s_times, e_times, label_chunk)],
columns=['start_time', 'end_time', 'labels'])
for s_times, e_times, label_chunk in zip(st_list, et_list, l_list)]
(没有运行)
但是,此解决方案很难阅读。我建议将更高层次的理解提取到一个 for 循环中。 另一个建议是:将每个患者的数据存储在一个数据帧中。更易于操作、阅读和更方便。
评论
0赞
Imane Kwik
12/15/2022
感谢您的回复。事实上,将每个患者的数据存储在一个数据帧中更容易,尤其是现在我只有 4 个患者。但是,我仍在收集患者数据,因此该算法也应该适用于 100+ 患者。这就是为什么我想循环做。但是,如果您认为更好,您能否告诉我如何将更高层次的理解提取到 for 循环中?提前感谢!
评论