[英]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.