您好,我正在尝试使用 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
