为了介绍这个话题,我们将讨论Pandas Dataframe,以及我们如何通过简单的步骤轻松地在DataFrame中添加和删除行。
目录
- 使用字典添加行
- 使用列表添加行
- 使用系列添加行
- 通过名称删除行
- 通过位置删除一个行
- 通过布尔索引删除行
使用字典添加行
假设我们有一个名为df的潘达斯数据框架,它看起来像是
| 第一个 | 最后一个 | 电子邮件 |
|---|---|---|
| Lena | 罗伯特 | lena@gmail |
| 阿什利 | 约翰 | ashley@gmail |
我们有两行和三个不同的列,它们描述了一个人的名字、姓氏和电子邮件。
接下来,要在上述DataFrame中添加新的行,需要使用Pandas .append()方法。就像我们向一个数组的项目添加项目一样,这个方法在Pandas DataFrame上的工作方式也很相似。
为了添加另一行,我们使用一个字典,其键与DataFrame的列名相匹配,其值与我们想要添加的新行的内容相匹配。在使用字典添加行时,额外的参数ignore_index被设置为True。
代码:
df = df.append({'first':'Jill', 'last':'Cooper', 'email':'jill@gmail'}, ignore_index=True)
因此,通过写这个,我们已经成功地在现有的 DataFrame 中添加了一条新的行,现在看起来是这样的
| 第一条 | 最后一行 | 电子邮件 |
|---|---|---|
| 莉娜 | 罗伯特 | lena@gmail |
| 阿什利 | 约翰 | ashley@gmail |
| 吉尔 | 库珀 | Jill@gmail |
使用列表添加行
使用与上例相同的DataFrame,我们现在继续使用列表向同一DataFrame添加新行。
当使用列表向Pandas DataFrame添加行时,我们必须通过Pandas .loc方法来完成。loc方法包含了DataFrame的长度。
接下来我们将新行的数据添加到一个列表中。
代码:
df.loc[len(df)] = ['Jay','Bion', 'jay@gmail']
这样写,我们已经成功地在现有的DataFrame中添加了新的行,现在看起来像这样
| 第一行 | 最后一行 | 电子邮件 |
|---|---|---|
| 莉娜 | 罗伯特 | lena@gmail |
| 阿什利 | 约翰 | ashley@gmail |
| 吉尔 | 库珀 | Jill@gmail |
| 杰伊 | 比恩 | jay@gmail |
使用系列添加行
现在我们已经学会了两种方法,第三种方法包括使用Pandas系列。系列是一个一维数组,能够容纳任何类型的数据。
这个过程包括使用我们之前使用的.append()方法。Pandas .Series()方法将包含新行数据的列表转换为一个系列。
代码:
df = df.append(pd.Series(['Shaun','Salp', 'shaun@gmail']), ignore_index=True)
因此,通过这样写,我们已经成功地在现有的DataFrame中添加了一个新行,现在看起来是这样的
| 第一行 | 最后一行 | 电子邮件 |
|---|---|---|
| 莉娜 | 罗伯特 | lena@gmail |
| 阿什利 | 约翰 | ashley@gmail |
| 吉尔 | 库珀 | Jill@gmail |
| 杰伊 | 比恩 | jay@gmail |
| 肖恩 | 瑟普 | shaun@gmail |
按名称删除某一行
用于删除下面数据框架中的一行:
| 第一个 | 最后一个 | 电子邮件 |
|---|---|---|
| 丽娜 | 罗伯特 | lena@gmail |
| 阿什利 | 约翰 | ashley@gmail |
| 吉尔 | 库珀 | Jill@gmail |
| 杰伊 | 比恩 | jay@gmail |
| 肖恩 | 绍普 | shaun@gmail |
我们使用Pandas的.drop()方法。.drop()方法有很多参数,重要的参数是:
- label:行或列的标签或标识
- axis(轴):这个参数的默认值设置为0,表示行,因此在删除行的时候不需要提到它。
- inplace:当设置为True时,它允许你覆盖在现有的DataFrame上。如果设置为False,那么Pandas将返回一个DataFrame的副本,而不是覆盖原始DataFrame。
使用.drop()方法,按名字删除一行。我们使用的是DataFrame中第一个条目的名字。使用的两个参数将是label,inplace,其中label被设置为名称,inplace被设置为True。
代码:
df.drop('Lena', inplace=True)
上面的代码将导致从DataFrame中删除name='Lena'的行,现在看起来是这样的
| 第一个 | 最后一行 | 电子邮件 |
|---|---|---|
| 阿什利 | 约翰 | ashley@gmail |
| 吉尔 | 库珀 | Jill@gmail |
| 杰伊 | 比恩 | jay@gmail |
| 肖恩 | 绍普 | shaun@gmail |
按位置删除一行
使用与上例相同的DataFrame,我们继续从同一DataFrame中按位置删除一条行。
通过位置删除使用行的位置(行的索引)来删除特定的行。它使用.drop方法和要删除的行的索引。这个方法对于删除多条记录是很方便的,只需使用它们的索引位置。
代码:
df = df.drop(df.index [[ 0 ]])
上面的代码将导致从DataFrame中删除name='Ashley'的行,现在看起来是这样的
| 第一条 | 最后一行 | 电子邮件 |
|---|---|---|
| 吉尔 | 库珀 | Jill@gmail |
| 杰伊 | 比恩 | jay@gmail |
| 肖恩 | 瑟普 | shaun@gmail |
通过布尔索引删除一条记录
使用与上例相同的DataFrame,现在我们继续使用布尔索引从同一DataFrame中删除一条记录。
布尔索引通常用于轻松过滤Pandas Dataframe中的记录,同样,它也可以用于删除记录。使用这种方法是因为它可以一次性删除具有相同索引数据的多条记录,而不是指定多条记录的索引号。
代码:
df = df.drop(df.index != "Jill")
上面的代码将导致从DataFrame中删除所有可能的name='Jill'的行,现在看起来是这样的
| 第一条 | 最后一行 | 电子邮件 |
|---|---|---|
| 杰伊 | Bion | jay@gmail |
| 肖恩 | 萨尔普 | shaun@gmail |
总结
在OpenGenus的这篇文章中,我们学习了如何在Pandas DataFrame中添加和删除行。我们还学习了一些不同的方法来添加行,包括使用字典、列表和Pandas系列。接下来,我们学习了如何通过使用drop方法来删除行。根据名称、位置使用该方法的不同方法,最后是通过布尔索引删除行。