如何从 Pandas 数据框中提取字符串并创建新列

问题描述 投票:0回答:2

我从包含以下列的 pandas 数据框开始:

Name:    'Computer', 'Tablet', 'Monitor'
Price:   900, 300, 400
Identifier:  '11$10qw-IDAA', '2222-IL$DB123', '2237-12$33AVD-ewwfq'

我想创建一个数据框的新列(例如 NewString)来提取 标识符列中包含 $ 字符的子字符串。 也就是说,我想将包含值的列添加到 df:

NewString
11$10qw
IL$DB123
12$33AVD

我尝试使用两个嵌套的 for 循环来完成此操作:一个循环遍历 df 的所有行,并且 在另一个循环中,该循环作用于由“标识符”列上的分割形成的列表,但我无法解决它

python pandas dataframe strsplit newrow
2个回答
0
投票

您可以使用

apply
函数和自定义 lambda 函数从“标识符”列中提取所需的子字符串来实现此目的。这是一个例子:

import pandas as pd

# Your initial dataframe
data = {
    'Name': ['Computer', 'Tablet', 'Monitor'],
    'Price': [900, 300, 400],
    'Identifier': ['11$10qw-IDAA', '2222-IL$DB123', '2237-12$33AVD-ewwfq']
}

df = pd.DataFrame(data)

# Function to extract substring containing "$"
def extract_substring(identifier):
    parts = identifier.split('-')  # Split by "-" to get individual parts
    for part in parts:
        if '$' in part:
            return part

# Apply the function to create a new column
df['NewString'] = df['Identifier'].apply(lambda x: extract_substring(x))

# Display the resulting dataframe
print(df[['Name', 'Price', 'NewString']])

这段代码定义了一个函数

extract_substring
,它接受一个标识符,用“-”分隔它,并查找包含“$”的部分。然后使用
apply
函数将此函数应用于“Identifier”列的每一行,创建新的“NewString”列。

生成的数据框将具有“NewString”列,其中包含从“Identifier”列中提取的所需子字符串。


0
投票

使用正则表达式与

str.extract
:

df['out'] = df['Identifier'].str.extract(r'([^-]*\$[^-]*)', expand=False)

输出:

       Name  Price           Identifier       out
0  Computer    900         11$10qw-IDAA   11$10qw
1    Tablet    300        2222-IL$DB123  IL$DB123
2   Monitor    400  2237-12$33AVD-ewwfq  12$33AVD
© www.soinside.com 2019 - 2024. All rights reserved.