首页 > 解决方案 > Pandas DataFrame 列被传递给新的数据数据框

问题描述

我正在尝试使用现有的数据框值创建一个新的数据框。下面的代码接受一个名为 dfhiddencols 的数据框,其中包含 3 列

父、子列表、公式

dfhiddencols

然后它创建一个名为 newdf 的新数据框,其中有 2 列名为

父母,孩子

然后它遍历每一行 dfhiddencols 以找到特定的模式。当它找到该模式时,它会在 dfnew 中添加一个新行。通过从 dfhiddencols 和匹配的模式字符串中获取父列值。

但是,当添加此新记录时,它会向 newdf 添加 2 个附加列

子列表,公式

创建字典 createrow 时未定义这 2 列。您知道为什么将列传递给新的数据框以及如何避免这种情况吗?

def extracthiddencolumns(dfhiddencols):
newdf = pd.DataFrame(columns=['child', 'parent'])
createrow ={}
for idx, row in dfhiddencols.iterrows():
    #if len(str(row['formula'])) > 3:
        for formula in row['formula'].split('|||'):
            if formula != '' and '??' in formula:
                formula = formula.strip('\n')
                formula = formula.strip('\t')
                for i in re.findall(r"\[\?\?([A-Za-z0-9_]+)\.([A-Za-z0-9_]+)\?\?\]", formula):
                    strconcat = i[0] + "." + i[1]
                    parent = row['parent']
                    createrow = {'child': parent, 'parent': strconcat}
                    newdf = dfhiddencols.append(createrow, ignore_index=True)
            createrow = {}
newdf.drop(columns=['childlist', 'formula'])
return newdf

标签: pythonpandas

解决方案


说起来很尴尬,我正在将新记录附加到传递的 DF 中,因此它解释了数据框中出现的新列


推荐阅读