繁体   English   中英

在Python中扩展单元格值范围的行的方法?

[英]Way to expand rows for range of cell value in Python?

我有一个看起来像这样的数据集。

    data = {'doc_ID':['Monday', 'Tuesday', 'Wednesday'], 'attachmentCount':[3,0,2], 'open':['TRUE','TRUE','FALSE']}
    df = pd.DataFrame(data)
    df

        doc_ID  attachmentCount open
    0   Monday      3           TRUE
    1   Tuesday     0           TRUE
    2   Wednesday   2           FALSE

我想通过为 1 和“attachmentCount”的最大值之间的每个整数插入一行来扩展数据集。 所以,它应该是这样的:

        doc_ID  attachmentCount   open
   0    Monday         1          TRUE
   1    Monday         2          TRUE
   2    Monday         3          TRUE
   3    Tuesday        0          TRUE
   4    Wednesday      1          FALSE
   5    Wednesday      2          FALSE

我尝试了几种不同的东西,这些东西非常不正确,不值得在这里发布。 有人有什么建议吗? 谢谢你。

我不知道熊猫,但在纯 python 中,以下代码提供了您需要的输出。

a = [[0, 'Monday', 3, True], [1, 'Tuesday', 0, True], [2, 'Wednesday', 2, False]]
[[[x[0],x[1],y,x[3]] for y in set(range(1,x[2]+1)+[x[2]])] for x in a]

解释代码:

a是数据集。

x是数据集的每一行。

因此,在内部List Comprehension 中range(1,x[2]+1)+[x[2]])是从 1 到attachmentCount 的所有整数,无论​​attachmentCount 是什么。 这是必需的,因为attachmentCount 可以小于1,例如在您的情况下为0。 这将转换为集合以删除重复项。

最里面的部分只是用新创建的一组值的每个元素替换attachmentCount。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM