📜  pandas 从列中提取值 - Python (1)

📅  最后修改于: 2023-12-03 14:45:03.275000             🧑  作者: Mango

Pandas 从列中提取值 - Python

简介

在 Pandas 中,我们有时需要从列中提取有用的数据。Pandas 提供了一些方便的方法来提取和处理列中的值。

使用 .str 方法提取字符串

如果我们需要从一个字符串列中提取想要的信息,我们可以使用 .str 方法。这个方法允许我们对字符串进行操作并提取想要的数据。

import pandas as pd

# 创建数据集
data = {'name': ['Alice', 'Bob', 'Charlie', 'David'],
        'email': ['alice@example.com', 'bob@example.com', 'charlie@example.com', 'david@example.com']}

df = pd.DataFrame(data)

# 从 email 列中提取用户名
df['username'] = df['email'].str.split('@').str[0]

在这个例子中,我们从 email 列中提取用户名,并将其存储在一个新的列 'username' 中。我们使用了 .str.split('@') 方法将每个 email 地址分割成两部分,然后使用了 .str[0] 方法提取用户名部分。

使用 .apply 方法

我们也可以使用 .apply 方法从列中提取和处理数据。这个方法允许我们自定义一个函数,并将其应用到某一列上。

import pandas as pd

# 创建数据集
data = {'name': ['Alice', 'Bob', 'Charlie', 'David'],
        'age_email': ['25, alice@example.com', '30, bob@example.com', '35, charlie@example.com', '40, david@example.com']}

df = pd.DataFrame(data)

# 从 age_email 列中提取年龄信息
df['age'] = df['age_email'].apply(lambda x: int(x.split(', ')[0]))

在这个例子中,我们从 age_email 列中提取年龄信息,并将其存储在一个新的列 'age' 中。我们定义了一个 lambda 函数,将每一行的 age_email 列进行处理,并使用了 .split(', ') 方法将其分割成两部分,然后使用了 int() 方法将其转换为整数类型。

使用正则表达式

正则表达式是一种强大的字符串处理工具,可以用来从一组字符串中提取某些信息。Pandas 也支持使用正则表达式从列中提取值。

import pandas as pd

# 创建数据集
data = {'name': ['Alice', 'Bob', 'Charlie', 'David'],
        'phone': ['123-456-7890', '111-222-3333', '555-666-7777', '999-888-7777']}

df = pd.DataFrame(data)

# 从 phone 列中提取区号
df['area_code'] = df['phone'].str.extract(r'(\d{3})-\d{3}-\d{4}')

在这个例子中,我们从 phone 列中提取区号,并将其存储在一个新的列 'area_code' 中。我们使用了 .str.extract() 方法和一个正则表达式来提取区号,其中 \d{3} 表示三个数字。

结论

Pandas 提供了多种方便的方法来提取和处理列中的数据。无论您需要从字符串、数字或其他类型的列中提取数据,都可以使用这些方法来实现。