在多个条件下为列中的每一行提取第一个单词
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
我有一个数据集包含一列字符串。看起来像
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