Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在多种条件下为列中的每一行提取第一个单词_Python_Pandas_Strsplit_Multiple Conditions - Fatal编程技术网

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

Python 在多种条件下为列中的每一行提取第一个单词,python,pandas,strsplit,multiple-conditions,Python,Pandas,Strsplit,Multiple Conditions,我有一个数据集包含一列字符串。看起来像 df.a=[['samsung/windows'、'mobile unknown'、'chrome/android']]。 我试图获取每行的第一个单词来替换当前字符串,例如:[“samsung”、“mobile”、“chrome”]] 我申请: df.a=df.a.str.split().str.get(0) 这给了我第一个单词,但带有“/” 这仅拆分包含“/”的字符串 我可以用一行代码得到预期的结果吗?使用re.findall()只得到字母数字 imp

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

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

我申请:

df.a=df.a.str.split().str.get(0)
这给了我第一个单词,但带有“/”

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

我可以用一行代码得到预期的结果吗?

使用
re.findall()
只得到字母数字

import re
df['a'] = df['a'].apply(lambda x : re.findall(r"[\w']+",x)[0])
使用
re.findall()
只获取字母数字

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

您可以将正则表达式语法直接传递给split函数,以便在
/
'
上使用管道字符
|
进行拆分,但他的解决方案只有在这些是数据中唯一的分隔符时才起作用

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

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

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

您可以将正则表达式语法直接传递给split函数,以便在
/
'
上使用管道字符
|
进行拆分,但他的解决方案只有在这些是数据中唯一的分隔符时才起作用

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

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

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

pandas
功能完全可以执行您想要的操作:

将正则表达式pat中的捕获组提取为数据帧中的列


pandas
功能完全可以执行您想要的操作:

将正则表达式pat中的捕获组提取为数据帧中的列


谢谢我尝试了:train_id['id_31']=train_id['id_31'].str.replace('/','').str.split(n=1.str.get(0)。它得到相同的结果,但是你的也可以应用于其他角色。谢谢。我尝试了:train_id['id_31']=train_id['id_31'].str.replace('/','').str.split(n=1.str.get(0)。它得到相同的结果,但您的结果也可以应用于其他字符。