Skip to main content
 首页 » 编程设计

python之如何从 Pandas 数据框中的可变长度列中提取子字符串

2025年05月04日27xxx_UU

您好,我正在尝试使用 python 中的 pandas 数据框中的列来完成类似于 excel 中的 mid 函数的操作。我有一个列,其中包含可变长度的药物名称 + 强度等。我只想提取名称的第一个“部分”并将结果放入数据框中的另一列。

例子:

Dataframe 列

MEDICATION_NAME 
acetaminophen 325 mg 
a-hydrocort 100 mg/2 ml 

Desired Result

MEDICATION_NAME               GENERIC_NAME 
acetaminophen 325 mg          acetaminophen      
a-hydrocort 100 mg/2 ml       a-hydrocort 

What I have tried

df['GENERIC_NAME'] = df['MEDICATION_NAME'].str[:df['MEDICATION_NAME'].apply(lambda x: x.find(' '))] 

基本上我想应用

的行特定结果
df['GENERIC_NAME'] = df['MEDICATION_NAME'].apply(lambda x: x.find(' ')) 

到

 str[:] 
功能?

谢谢

请您参考如下方法:

您可以使用 str.partition [pandas-doc]这里:

df['GENERIC_NAME'] = df['MEDICATION_NAME'].str.partition(' ')[0] 

对于给定的列,这给出:

>>> g.str.partition(' ')[0] 
0    acetaminophen 
1      a-hydrocort 
Name: 0, dtype: object 

partition 本身从一个系列创建一个包含三列的数据框:之前、匹配和之后:

>>> df['MEDICATION_NAME'].str.partition(' ') 
               0  1            2 
0  acetaminophen          325 mg 
1    a-hydrocort     100 mg/2 ml