在多个条件下为列中的每一行提取第一个单词

Extract first word for each row in a column under multiple conditions

我有一个数据集包含一列字符串。看起来像

df.a=[['samsung/windows','mobile unknown','chrome/android']]。 我正在尝试获取每行的第一个单词来替换当前字符串,例如[['samsung','mobile','chrome']]

我申请了:

df.a=df.a.str.split().str.get(0)

这给了我第一个单词,但带有“/”

df.a=[words.split("/")[0] for words in df.a]

这只会拆分包含“/”的字符串

一行就能得到预期的结果吗?

使用 re.findall() 并仅获取字母数字

import re
df['a'] = df['a'].apply(lambda x : re.findall(r"[\w']+",x)[0])

您可以将正则表达式语法直接传递给拆分函数,以使用管道字符 |/' ' 上进行拆分,但他的解决方案仅在 [=] 16=]您的数据中只有 个分隔符

dfa=pd.Series(['samsung/windows','mobile unknown','chrome/android'])

dfa.str.split(r'/| ')

0    [samsung, windows]
1     [mobile, unknown]
2     [chrome, android]

pandas 函数 extract 完全按照您的意愿行事:

Extract capture groups in the regex pat as columns in a DataFrame

df['a'].str.extract(r"(\w+)", expand=True)
#          0
# 0  samsung
# 1   mobile
# 2   chrome