如何创建一个包含 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?

提问人:Imane Kwik 提问时间:12/15/2022 最后编辑:TimusImane Kwik 更新时间:12/16/2022 访问量:23

问:

对于我的应用程序,我有 3 个列表(、 和 ),每个列表由 4 个不同大小的嵌套列表组成(每个嵌套列表都包含对患者的观察,因此总共有 4 个患者)。start_timestampsend_timestampslabels

现在我想创建一个包含 4 个数据帧(每个患者一个)的列表,每个数据帧的大小为 (n,3),n 是观测值的数量,3 是 和 列。start_timeend_timelabels

我正在考虑用列表推导来做到这一点:

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 专家可以帮助我吗?

Python DataFrame for-loop list-comprehension 嵌套列表

评论


答:

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 循环中?提前感谢!