当前位置: 首页 > 知识库问答 >
问题:

向带列的空数据框添加行

商昆琦
2023-03-14

我正在使用Pandas,希望将行添加到已建立列的空数据框中。

到目前为止,我的代码看起来像这样。。。

def addRows(cereals,lines):
    for i in np.arange(1,len(lines)):
        dt = parseLine(lines[i])
        dt = pd.Series(dt)
        print(dt)
    # YOUR CODE GOES HERE (add dt to cereals)
       cereals.append(dt, ignore_index = True)
    return(cereals)

然而,当我跑步的时候。。。

cereals = addRows(cereals,lines)
cereals

数据框返回时没有行,只有列。我不确定我做错了什么,但我很确定它与append方法有关。有人知道我做错了什么吗?

共有1个答案

蒙勇
2023-03-14

代码未按预期运行可能有两个原因:

>

  • cereals.append(dt,ignore_index=True)没有做你认为的事情。您正试图追加一个系列,而不是数据帧。

    cereals.append(dt,ignore_index=True)不会修改谷物,因此当您返回它时,您返回的是一个不变的副本。一个等效的函数看起来像这样:

    --

    >>> def foo(a):
    ...    a + 1
    ...    return a
    ... 
    >>> foo(1)
    1
    

    我还没有在我的机器上测试过,但我认为您的解决方案是这样的:

    def addRows(cereals, lines):
        for i in np.arange(1,len(lines)):
            data = parseLine(lines[i])
            new_df = pd.DataFrame(data, columns=cereals.columns)
            cereals = cereals.append(new_df, ignore_index=True)
        return cereals
    

    顺便说一句我真的不知道线条是从哪里来的,但我至少要马上修改它,使其看起来像这样:

    data = [parseLine(line) for line in lines]
    cereals = cereals.append(pd.DataFrame(data, cereals.columns), ignore_index=True)
    

    如何添加额外的行到熊猫数据框

    您还可以创建一个新的数据帧,并将该数据帧附加到现有的数据帧中。例如。

    >>> import pandas as pd
    >>> empty_alph = pd.DataFrame(columns=['letter', 'index'])
    >>> alph_abc = pd.DataFrame([['a', 0], ['b', 1], ['c', 2]], columns=['letter', 'index'])
    >>> empty_alph.append(alph_abc)
      letter  index
    0      a    0.0
    1      b    1.0
    2      c    2.0
    

    正如我在链接中指出的,您也可以在DataFrame上使用loc方法:

    >>> df = empty_alph.append(alph_abc)
    >>> df.loc[df.shape[0]] = ['d', 3]  // df.shape[0] just finds next # in index
      letter  index
    0      a    0.0
    1      b    1.0
    2      c    2.0
    3      d    3.0
    

  •  类似资料:
    • 问题内容: 将空列添加到pandas对象的最简单方法是什么?我偶然发现的最好的东西是 有没有那么不合常理的方法? 问题答案: 如果我理解正确,则应填写作业:

    • 问题内容: 我有一个数据框看起来像这样: 对于YEAR值,我想在原始数据帧中添加year列(1993,1994 …,2009)。如果YEAR中的值为1992,则1992列中的值应为1,否则为0。 我使用了一个非常愚蠢的for循环,但是由于我拥有大量数据集,它似乎可以永远运行。谁能帮助我,非常感谢! 问题答案: 如果您想删除该列,则可以通过进行后续操作。或者,在调用之前从中删除列:

    • 问题内容: 我想像这样向数据框添加列“ D”: 根据以下字典: 因此结果数据框显示为: 到目前为止,我尝试了该方法,但无法弄清楚它如何与Dictionary一起工作。 问题答案: 调用并传递字典,这将执行查找并返回该键的关联值:

    • 问题内容: 我有一些像这样的数据框: A中值 的 可能范围仅为0到7 。 另外,我有一个8个元素的列表,如下所示: 如果A列中的元素是 n ,我需要将List中的第 n 个元素插入新列,例如’D’。 如何一口气做到这一点而又不遍历整个数据框? 产生的数据框如下所示: 注意:数据框很大,迭代是最后一个选项。但是如果需要的话,我也可以将其他数据结构(如dict)排列在“ List”中的元素上。 问题答

    • 从这个问题和其他问题来看,似乎不建议使用或来构建熊猫数据帧,因为每次都会重新复制整个数据帧。 我的项目涉及每30秒检索少量数据。这可能会运行3天的周末,因此有人很容易期望一次创建一行超过8000行。向该数据帧添加行的最有效方法是什么?

    • 问题内容: 从这个问题和其他问题来看,似乎不建议使用或构建熊猫数据框,因为它每次都在重新复制整个数据框。 我的项目涉及每30秒检索少量数据。这可能需要进行为期3天的周末,所以有人可以轻松地期望一次创建超过8000行。将行添加到此数据框的最有效方法是什么? 问题答案: 由于它完全被误认为是在此处编辑所选答案。以下内容说明了为什么不 应该 使用放大设置。 “放大设置”实际上比追加效果差。 该 TL;博