Python Pandas:如何在DataFrame中添加行

Python Pandas数据框append()是一个内置函数,用于将其他数据框的行附加到给定数据框的末尾,并返回一个新的数据框对象。将不在原始数据框中的列添加为新列,并使用NaN值填充新单元格。

如何在DataFrame中添加行

内容概述

  • 1如何在DataFrame中添加行
  • 2个熊市猫Dataframe.append()
  • 3使用loc在数据框中添加一行[] 和清单
  • 4使用iloc在数据框中的索引位置添加一行[]
  • 5结论
  • 6另请参见

Python Pandas DataFrame是具有标签轴(行和列)的二维大小可变的,可能是Compound的表格数据结构。 DataFrame可以包含以下类型的数据。

  1. 熊市猫系列:一维标签数组,可以保存带有轴标签或索引的任何数据类型。 Series对象的一个​​示例是DataFrame中的一列。
  2. NumPy ndarray,可以是记录或结构。
  3. 使用NumPy的二维ndarray。
  4. 一维ndarray,列表,字典或系列的字典。

我们可以使用三种主要方法在DataFrame中添加行。

  1. Dataframe.append()
  2. 位置[ ]
  3. iloc[ ]

熊市猫Dataframe.append()

DataFrame.append()是一个内置函数,用于合并另一个DataFrame对象中的行。 append()函数返回新的DataFrame对象,并且不更改源对象。

如果列不匹配,则将新列添加到结果DataFrame中。

请参见以下语法。

DataFrame.append(other, ignore_index=False, verify_integrity=False, sort=None)

参量

  1. 其他:DataFrame或类似Series / dict的对象或列表。
  2. ignore_index:如果为True,则不要使用索引标签。
  3. verify_integrity:如果为True,则在创建具有重复项的索引时引发ValueError。
  4. sort:如果self和other的列不对齐,则对列进行排序。默认排序已弃用,在将来的熊市猫版本中将更改为不排序。显式传递sort = True可以使警告和排序保持静音。显式传递sort = False可使警告静音而不进行排序。

好的,让我们来看一下上面的功能。

使用元组列表创建Pandas数据框

请参阅以下代码。

# app.py

import pandas as pd

shows = [('The Witcher', 'Henry Cavil', 'Geralt'),
         ('Stranger Things', 'Millie Brown', 'Eleven'),
         ('BoJack Horseman', 'Will', 'BoJack'),
         ('Adventures of Sabrina', 'Kiernan Shipka', 'Spellman'),
         ('House of Cards', 'Kevin Spacey', 'Frank Underwood')]

dfObj = pd.DataFrame(shows,
                     columns=['Series', 'Name', 'Character Name'])

print(dfObj)

在上面的代码中,我们使用了显示列表,该列表由五个元组组成。

数据框的列名称为“系列”,“名称”和“字符名称”。

数据帧的索引为a,b,c,d,e。

请参阅以上代码的输出。

python3 app.py
                  Series            Name   Character Name
0            The Witcher     Henry Cavil           Geralt
1        Stranger Things    Millie Brown           Eleven
2        BoJack Horseman            Will           BoJack
3  Adventures of Sabrina  Kiernan Shipka         Spellman
4         House of Cards    Kevin Spacey  Frank Underwood

使用dataframe.append()和dict在dataframe中添加行

在dataframe.append()中,我们可以传递键值对的字典,即

  • 键=列名
  • 值=新行中该列的值

让我们在绕过字典的数据框上方添加新行,即

# app.py

newDfObj = dfObj.append({'Series': 'S Education',
                         'Name': 'ASA',
                         'Character Name': 'Otis'}, ignore_index=True)

print(newDfObj)

在上面的代码中,我们调用了dataframe对象的append()函数,并将字典作为dataframe的新行传递。

请参阅下面的完整代码。

# app.py

import pandas as pd

shows = [('The Witcher', 'Henry Cavil', 'Geralt'),
         ('Stranger Things', 'Millie Brown', 'Eleven'),
         ('BoJack Horseman', 'Will', 'BoJack'),
         ('Adventures of Sabrina', 'Kiernan Shipka', 'Spellman'),
         ('House of Cards', 'Kevin Spacey', 'Frank Underwood')]

dfObj = pd.DataFrame(shows,
                     columns=['Series', 'Name', 'Character Name'])

newDfObj = dfObj.append({'Series': 'S Education',
                         'Name': 'ASA',
                         'Character Name': 'Otis'}, ignore_index=True)

print(newDfObj)

输出量

python3 app.py
                  Series            Name   Character Name
0            The Witcher     Henry Cavil           Geralt
1        Stranger Things    Millie Brown           Eleven
2        BoJack Horseman            Will           BoJack
3  Adventures of Sabrina  Kiernan Shipka         Spellman
4         House of Cards    Kevin Spacey  Frank Underwood
5            S Education             ASA             Otis

从输出中,您可以看到最后一行是新添加的行。

因此,这是在熊市猫数据框中添加行的方式。

对于字典中不存在的列,将NaN值添加到最终数据帧中。

让我们来看看这种情况。

# app.py

newDfObj = dfObj.append({'Series': 'S Education',
                         'Name': 'ASA'}, ignore_index=True)

print(newDfObj)

在上面的代码中,我们在添加新行时跳过了字符名称。因此在输出中,将返回NaN。查看输出。

python3 app.py
                  Series            Name   Character Name
0            The Witcher     Henry Cavil           Geralt
1        Stranger Things    Millie Brown           Eleven
2        BoJack Horseman            Will           BoJack
3  Adventures of Sabrina  Kiernan Shipka         Spellman
4         House of Cards    Kevin Spacey  Frank Underwood
5            S Education             ASA              NaN

在传递字典或系列时,必须传递ignore_index = True,否则会发生TypeError错误,例如,

“ TypeError:仅当ignore_index = True或系列具有名称时,才可以追加系列。”

使用dataframe.append()和Series在数据框中添加行

我们还可以将系列传递给append(),以在数据帧中追加新行。

请参阅以下代码。

# app.py

newDfObj = dfObj.append(pd.Series(['S Education', 'ASA', 'Otis'],
                                  index=dfObj.columns),
                        ignore_index=True)

print(newDfObj)

在上面的代码中,我们将一系列添加为新行,其中包含三个值。

请参阅下面的完整代码。

# app.py

import pandas as pd

shows = [('The Witcher', 'Henry Cavil', 'Geralt'),
         ('Stranger Things', 'Millie Brown', 'Eleven'),
         ('BoJack Horseman', 'Will', 'BoJack'),
         ('Adventures of Sabrina', 'Kiernan Shipka', 'Spellman'),
         ('House of Cards', 'Kevin Spacey', 'Frank Underwood')]

dfObj = pd.DataFrame(shows,
                     columns=['Series', 'Name', 'Character Name'])

newDfObj = dfObj.append(pd.Series(['S Education', 'ASA', 'Otis'],
                                  index=dfObj.columns),
                        ignore_index=True)

print(newDfObj)

输出量

python3 app.py
                  Series            Name   Character Name
0            The Witcher     Henry Cavil           Geralt
1        Stranger Things    Millie Brown           Eleven
2        BoJack Horseman            Will           BoJack
3  Adventures of Sabrina  Kiernan Shipka         Spellman
4         House of Cards    Kevin Spacey  Frank Underwood
5            S Education             ASA             Otis

因此,我们得到的输出与在数据帧中的一行中添加一个字典的输出相同。

如何使用dataframe.append()和Series在数据框中添加多行

到目前为止,我们在数据框中添加了一行。现在,我们将使用dataframe.append()和pandas系列在数据框中添加多行。

我们可以在dataframe.append()中传递系列列表,以在数据框中追加多行。

因此,我们创建一个与数据框具有相同列名的系列列表。

请参阅以下代码。

# app.py

listOfSeries = [pd.Series(['S Education', 'ASA', 'Otis'], index=dfObj.columns),
                pd.Series(['Money Heist', 'Ursu Lolita', 'Tokyo'],
                          index=dfObj.columns),
                pd.Series(['Black Mirror', 'Miley Cyrus', 'Ashley'], index=dfObj.columns)]

newDfObj = dfObj.append(listOfSeries, ignore_index=True)

请参阅以下完整代码。

# app.py

import pandas as pd

shows = [('The Witcher', 'Henry Cavil', 'Geralt'),
         ('Stranger Things', 'Millie Brown', 'Eleven'),
         ('BoJack Horseman', 'Will', 'BoJack'),
         ('Adventures of Sabrina', 'Kiernan Shipka', 'Spellman'),
         ('House of Cards', 'Kevin Spacey', 'Frank Underwood')]

dfObj = pd.DataFrame(shows,
                     columns=['Series', 'Name', 'Character Name'])

listOfSeries = [pd.Series(['S Education', 'ASA', 'Otis'], index=dfObj.columns),
                pd.Series(['Money Heist', 'Ursu Lolita', 'Tokyo'],
                          index=dfObj.columns),
                pd.Series(['Black Mirror', 'Miley Cyrus', 'Ashley'], index=dfObj.columns)]

newDfObj = dfObj.append(listOfSeries, ignore_index=True)

print(newDfObj)

输出量

python3 app.py
                  Series            Name   Character Name
0            The Witcher     Henry Cavil           Geralt
1        Stranger Things    Millie Brown           Eleven
2        BoJack Horseman            Will           BoJack
3  Adventures of Sabrina  Kiernan Shipka         Spellman
4         House of Cards    Kevin Spacey  Frank Underwood
5            S Education             ASA             Otis
6            Money Heist     Ursu Lolita            Tokyo
7           Black Mirror     Miley Cyrus           Ashley

使用pandas dataframe append()从一个数据框向另一数据框添加一行

让我们创建另一个数据框。

# app.py

shows2 = [('S Education', 'ASA', 'Otis'),
          ('Money Heist', 'Ursu Lolita', 'Tokyo'),
          ('Black Mirror', 'Miley Cyrus', 'Ashley')]

dfObj2 = pd.DataFrame(shows2,
                      columns=['Series', 'Name', 'Character Name'])

现在,将dfObj2数据帧对象附加到dfObj数据帧对象。

# app.py

newDfObj = dfObj.append(dfObj2, ignore_index=True)

请参阅以下完整代码。

# app.py

import pandas as pd

shows = [('The Witcher', 'Henry Cavil', 'Geralt'),
         ('Stranger Things', 'Millie Brown', 'Eleven'),
         ('BoJack Horseman', 'Will', 'BoJack'),
         ('Adventures of Sabrina', 'Kiernan Shipka', 'Spellman'),
         ('House of Cards', 'Kevin Spacey', 'Frank Underwood')]

dfObj = pd.DataFrame(shows,
                     columns=['Series', 'Name', 'Character Name'])

shows2 = [('S Education', 'ASA', 'Otis'),
          ('Money Heist', 'Ursu Lolita', 'Tokyo'),
          ('Black Mirror', 'Miley Cyrus', 'Ashley')]

dfObj2 = pd.DataFrame(shows2,
                      columns=['Series', 'Name', 'Character Name'])

newDfObj = dfObj.append(dfObj2, ignore_index=True)

print(newDfObj)

输出量

python3 app.py
                  Series            Name   Character Name
0            The Witcher     Henry Cavil           Geralt
1        Stranger Things    Millie Brown           Eleven
2        BoJack Horseman            Will           BoJack
3  Adventures of Sabrina  Kiernan Shipka         Spellman
4         House of Cards    Kevin Spacey  Frank Underwood
5            S Education             ASA             Otis
6            Money Heist     Ursu Lolita            Tokyo
7           Black Mirror     Miley Cyrus           Ashley

我们将获得与上述相同的输出,但是这次,我们将一个数据框作为多行添加到了另一个数据框。

使用loc在数据框中添加一行[] 和清单

我们可以使用loc添加新行[ ] 和清单。

# app.py

dfObj = pd.DataFrame(shows,
                     columns=['Series', 'Name', 'Character Name'])

dfObj.loc[5] = ['S Education', 'ASA', 'Otis']

我们在数据框中的索引5处添加了新行。

查看完整代码。

# app.py

import pandas as pd

shows = [('The Witcher', 'Henry Cavil', 'Geralt'),
         ('Stranger Things', 'Millie Brown', 'Eleven'),
         ('BoJack Horseman', 'Will', 'BoJack'),
         ('Adventures of Sabrina', 'Kiernan Shipka', 'Spellman'),
         ('House of Cards', 'Kevin Spacey', 'Frank Underwood')]

dfObj = pd.DataFrame(shows,
                     columns=['Series', 'Name', 'Character Name'])

dfObj.loc[5] = ['S Education', 'ASA', 'Otis']

print(dfObj)

如果数据框已经有索引名称为5的行,则它将替换该行的内容。否则,它将添加一个新行。

输出量

python3 app.py
                  Series            Name   Character Name
0            The Witcher     Henry Cavil           Geralt
1        Stranger Things    Millie Brown           Eleven
2        BoJack Horseman            Will           BoJack
3  Adventures of Sabrina  Kiernan Shipka         Spellman
4         House of Cards    Kevin Spacey  Frank Underwood
5            S Education             ASA             Otis

使用iloc在数据框中的索引位置添加一行[]

我们可以使用iloc在数据框中的特定索引位置添加新行[]。

# app.py

dfObj.iloc[2] = ['S Education', 'ASA', 'Otis']

请参阅以下代码。

# app.py

import pandas as pd

shows = [('The Witcher', 'Henry Cavil', 'Geralt'),
         ('Stranger Things', 'Millie Brown', 'Eleven'),
         ('BoJack Horseman', 'Will', 'BoJack'),
         ('Adventures of Sabrina', 'Kiernan Shipka', 'Spellman'),
         ('House of Cards', 'Kevin Spacey', 'Frank Underwood')]

dfObj = pd.DataFrame(shows,
                     columns=['Series', 'Name', 'Character Name'])

dfObj.iloc[2] = ['S Education', 'ASA', 'Otis']

print(dfObj)

它将替换索引2处的行。因此,在我们的示例中,它将替换BoJack Horseman。

输出量

python3 app.py
                  Series            Name   Character Name
0            The Witcher     Henry Cavil           Geralt
1        Stranger Things    Millie Brown           Eleven
2            S Education             ASA             Otis
3  Adventures of Sabrina  Kiernan Shipka         Spellman
4         House of Cards    Kevin Spacey  Frank Underwood

结论

Python Pandas数据框append()函数用于将单个系列,字典,数据框添加为数据框中的一行。我们也可以添加多行。

我们也可以使用loc[ ] 和iloc[ ] 修改现有行或添加新行。

最后,Python Pandas:如何在DataFrame中添加行已结束。

也可以看看

熊市猫set_index()

熊市猫布尔索引

熊市猫sort_values()

熊市猫value_counts()

资讯来源:由0x资讯编译自APPDIVIDEND,版权归作者Krunal所有,未经许可,不得转载
你可能还喜欢