Pandas 将指定列提取到新的DataFrame中作为副本
在本文中,我们将介绍如何使用Pandas将指定的列提取并创建一个新的DataFrame,使得我们可以随意修改这个新DataFrame,而原始的DataFrame不会受到影响。
阅读更多:Pandas 教程
1. 提取单个列
我们可以使用Pandas的DataFrame对象中的[]操作符来提取单个列。例如,让我们考虑一个具有以下数据列的DataFrame:
| Name | Age | Country |
|---|---|---|
| John | 25 | USA |
| Sally | 32 | Canada |
| Tim | 18 | UK |
要提取“Age”列并将其存储在另一个DataFrame中,我们可以执行以下代码:
import pandas as pd
data = {'Name':['John', 'Sally', 'Tim'],
'Age':[25, 32, 18],
'Country':['USA', 'Canada', 'UK']}
df = pd.DataFrame(data)
age_df = df[['Age']].copy()
执行结果将是一个只包含“Age”列的新DataFrame,即age_df:
| Age |
|---|
| 25 |
| 32 |
| 18 |
请注意,我们必须使用copy()方法来创建新的DataFrame副本,以免更改原始DataFrame。
2. 提取多个列
要提取多个列,我们可以使用与提取单个列相同的[]操作符,并将列名列表作为参数传递。例如,让我们考虑以下DataFrame,其中包含以下数据列:
| Name | Age | Country | Gender |
|---|---|---|---|
| John | 25 | USA | M |
| Sally | 32 | Canada | F |
| Tim | 18 | UK | M |
要提取“Age”和“Gender”列并将它们存储在另一个DataFrame中,我们可以执行以下代码:
age_gender_df = df[['Age','Gender']].copy()
结果将是一个只包含“Age”和“Gender”列的新DataFrame,即age_gender_df:
| Age | Gender |
|---|---|
| 25 | M |
| 32 | F |
| 18 | M |
3. 提取连续的列
要提取连续的列,我们可以使用loc或iloc属性。例如,让我们考虑以下DataFrame,其中包含以下数据列:
| Name | Age | Country | Gender |
|---|---|---|---|
| John | 25 | USA | M |
| Sally | 32 | Canada | F |
| Tim | 18 | UK | M |
要提取从“Age”列到“Gender”列之间的所有列,我们可以使用以下代码:
age_to_gender_df = df.loc[:, 'Age':'Gender'].copy()
结果将是一个只包含从“Age”到“Gender”(包括这两列)的新DataFrame,即age_to_gender_df:
| Age | Country | Gender |
|---|---|---|
| 25 | USA | M |
| 32 | Canada | F |
| 18 | UK | M |
请注意,在使用loc方法时,我们必须指定所有我们想要包含在新DataFrame中的列名称范围,并使用:来表示所有行。
4. 取消副本要求
如果我们只想在原始DataFrame中操作特定列的值,就不需要创建新的DataFrame副本。我们可以直接对特定列进行操作并将结果存储回原始DataFrame中。例如:
df['Age'] = df['Age'] + 5
这将使每个人的年龄加上5岁。
总结
在Pandas中,我们可以轻松地从现有的DataFrame中提取特定列,以创建一个新的DataFrame副本。我们还可以使用loc或iloc属性来提取连续的列。如果只需要在原始DataFrame中对特定列进行操作,则无需创建副本。这样,我们可以更轻松地管理我们的数据,并对其进行必要的处理。
极客教程