Python Pandas:如何在DataFrame中添加行
Python Pandas数据框append()是一个内置函数,用于将其他数据框的行附加到给定数据框的末尾,并返回一个新的数据框对象。将不在原始数据框中的列添加为新列,并使用NaN值填充新单元格。
如何在DataFrame中添加行
内容概述
- 1如何在DataFrame中添加行
- 2个熊市猫Dataframe.append()
- 3使用loc在数据框中添加一行[] 和清单
- 4使用iloc在数据框中的索引位置添加一行[]
- 5结论
- 6另请参见
Python Pandas DataFrame是具有标签轴(行和列)的二维大小可变的,可能是Compound的表格数据结构。 DataFrame可以包含以下类型的数据。
- 熊市猫系列:一维标签数组,可以保存带有轴标签或索引的任何数据类型。 Series对象的一个示例是DataFrame中的一列。
- NumPy ndarray,可以是记录或结构。
- 使用NumPy的二维ndarray。
- 一维ndarray,列表,字典或系列的字典。
我们可以使用三种主要方法在DataFrame中添加行。
- Dataframe.append()
- 位置[ ]
- iloc[ ]
熊市猫Dataframe.append()
DataFrame.append()是一个内置函数,用于合并另一个DataFrame对象中的行。 append()函数返回新的DataFrame对象,并且不更改源对象。
如果列不匹配,则将新列添加到结果DataFrame中。
请参见以下语法。
DataFrame.append(other, ignore_index=False, verify_integrity=False, sort=None)
参量
- 其他:DataFrame或类似Series / dict的对象或列表。
- ignore_index:如果为True,则不要使用索引标签。
- verify_integrity:如果为True,则在创建具有重复项的索引时引发ValueError。
- 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()