将行添加到带有列的空数据框

Posted

技术标签:

【中文标题】将行添加到带有列的空数据框【英文标题】:adding rows to empty dataframe with columns 【发布时间】:2017-07-30 19:20:15 【问题描述】:

我正在使用 Pandas,并希望将行添加到已建立列的空 DataFrame。

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

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】:

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

cereals.append(dt, ignore_index = True) 没有按照您的想法行事。您正在尝试在其中附加一个系列,而不是 DataFrame。

cereals.append(dt, ignore_index = True) 不会就地修改 cereals,因此当您返回它时,您将返回一个未更改的副本。等效函数如下所示:

--

>>> 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)

How to add an extra row to a pandas dataframe

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

>>> 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

【讨论】:

以上是关于将行添加到带有列的空数据框的主要内容,如果未能解决你的问题,请参考以下文章

如何在 R 中将行添加到带有标题的空数据帧? [复制]

根据匹配的列标签将行值添加到数据框

向熊猫中的数据框添加行

将行添加到 SQL 查询结果,其中包含某些列的总数

淘汰赛将行添加到创建列的 foreach 循环中

选择列表框选项时将行添加到 Data GridView VB.net