对Pandas DataFrame列的条件性操作

  • Post category:Python

Pandas是Python数据科学生态系统中最重要的库之一,尤其是在数据处理和数据分析方面。而DataFrame是Pandas中常用的数据结构之一,它是二维表格结构数据。在Pandas DataFrame中,可以使用许多条件性操作,例如筛选行,排序等。本文将详细讲解Pandas DataFrame列的条件性操作。

设置DataFrame并导入数据

在本文中,我们将使用以下代码来生成一个示例DataFrame,以便我们在整篇文章中演示这些操作。

首先我们需要导入Pandas库。

import pandas as pd

然后我们可以使用以下代码来创建示例DataFrame。

data = {'name': ['Alice', 'Bob', 'Charlie', 'David', 'Emily', 'Eva'],
        'age': [25, 40, 23, 19, 33, 50],
        'score': [90, 80, 85, 70, 95, 75],
        'gender': ['F', 'M', 'M', 'F', 'F', 'F']}
df = pd.DataFrame(data)

此代码将创建一个包含以下内容的DataFrame:

name age score gender
Alice 25 90 F
Bob 40 80 M
Charlie 23 85 M
David 19 70 F
Emily 33 95 F
Eva 50 75 F

筛选列

在Pandas中,可以使用[ ]操作符来访问DataFrame的列,还可以使用lociloc方法来访问行和列。下面是一些例子。

使用操作符[ ]筛选列

df['name']     # 获取'name'列
df[['name', 'score']]    # 获取'name'和'score'列

使用loc方法筛选列

df.loc[:, 'name']     # 获取'name'列
df.loc[:, ['name', 'score']]    # 获取'name'和'score'列

使用iloc方法筛选列

df.iloc[:, 0]     # 获取第0列('name'列)
df.iloc[:, [0, 2]]    # 获取第0列和第2列('name'和'score'列)

筛选特定条件行

除了访问DataFrame中的列之外,我们还可以通过逻辑运算符和条件运算符筛选DataFrame中的行。下面是一些示例。

筛选符合条件的行

df[df['age'] < 30]    # 筛选年龄小于30岁的行

上述代码将选择DataFrame中age列小于30岁的行。

筛选多个条件的行

df[(df['age'] < 30) & (df['gender'] == 'F')]

此示例将选择DataFrame中符合以下条件的行:年龄小于30岁和性别为女性。注意,要使用括号来分组条件。

筛选出现在多重类别中的行

df[df['name'].isin(['Alice', 'David'])]

上述代码将选择DataFrame中名字为’Alice’或’David’的行。

更新列值

在Pandas中,可以使用赋值操作符=,以及其他数学操作符+, -, *, / 等来更新DataFrame中的列。下面是一些示例代码。

增加列值

df['score'] = df['score'] + 5    # 将'score'列中的值增加5分

上述代码将选择DataFrame中的score列并将其值增加5。

更新所有值

df['age'] = df['age'].apply(lambda x: x + 1)    # 将'age'列中的所有值增加1

上述代码将选择DataFrame中age列中的所有值并将其增加1.

删除列

我们可以使用drop方法来删除DataFrame中的列。下面是一些示例方法。

删除单个列

df.drop('gender', axis=1, inplace=True)    # 删除'gender'列

上述代码将选择DataFrame中的gender列并将其删除。

删除多列

df.drop(['name', 'score'], axis=1, inplace=True)    # 删除'name'和'score'列

上述代码将选择DataFrame中的namescore列并将其删除。

现在,我们已经学会了使用Pandas DataFrame中的条件性操作进行列的筛选、修改和删除。