【发布时间】:2020-11-20 10:42:34
【问题描述】:
我有一个数据框,每一行都有一个唯一的“组”和“成员”配对,以及与后续行中该配对相关的所有“代码”。下面是我编写的一段代码,用于创建其结构的一个小示例:
import pandas as pd
member = [1,1,2,2,2,3,3]
group = ['A', 'B', 'A', 'B', 'C', 'A', 'B']
dx1 = [11, 1232, 23, 346, 63, 346, 634]
dx2 = ["", 24, "", 2436, 346, 24, 97]
dx3 = ["", 2313, "", "", 987, 28, ""]
dx4 = ["", 234, "", "", "", "", ""]
dx5 = ["", 85, "", "", "", "", ""]
dx6 = ["", 4, "", "", "", "", ""]
dx7 = ["", 3, "", "", "", "", ""]
dx8 = ["", 9384, "", "", "", "", ""]
dx9 = ["", 38, "", "", "", "", ""]
dx0= ["", 3833, "", "", "", "", ""]
testdf = pd.DataFrame(data=[member, group, dx1, dx2, dx3, dx4, dx5, dx6, dx7, dx8, dx9, dx0])
cols=['group', 'member', 'code1', 'code2', 'code3', 'code4','code5','code6','code7','code8','code9','code0']
dft = testdf.T
dft.columns = cols
dft
该代码将生成此数据框:
实际的数据框有数千行。当一行/组成员配对中列出的“代码”超过四个时,我想为前四个之后的每四个代码创建一个新行。仅转换前两行的结果数据框应如下所示:
Final Df (only the first two rows of Initial DF)
我在想某种条件循环可以用来创建一个新的 df 并相应地追加新的行,但由于某种原因,我的大脑被困在如何做到这一点上。我很抱歉没有在这篇文章中将数据帧粘贴为文本,我对在 Stack 上发布相对较新(因此,如果有人对将 Pandas DF 作为文本粘贴到 Stack markdown 中提出建议,那也太棒了!)非常感谢任何帮助.
** 注意:在此示例中,第二行是唯一会被正确转换更改的行,因为它是唯一具有 > 4 个代码的行
【问题讨论】:
-
这里是关于在 Stack Overflow 上显示数据帧的信息:stackoverflow.com/help/minimal-reproducible-example
-
非常感谢@jsmart
标签: python pandas loops dataframe conditional-statements