Python 返回列的字符串中的第一个字

Python 返回列的字符串中的第一个字,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个数据帧: df = pd.DataFrame({'id' : ['abarth 1.4 a','abarth 1 a','land rover 1.3 r','land rover 2', 'land rover 5 g','mazda 4.55 bl'], 'series': ['a','a','r','','g', 'bl'] }) 我想从相应的id中删除“series”字符串,因此最终结

我有一个数据帧:

df = pd.DataFrame({'id' : ['abarth 1.4 a','abarth 1 a','land rover 1.3 r','land rover 2',
                           'land rover 5 g','mazda 4.55 bl'], 
                   'series': ['a','a','r','','g', 'bl'] })
我想从相应的id中删除“series”字符串,因此最终结果应该是:

最终结果应该是
'id':['abarth 1.4'、'abarth 1'、'land rover 1.3'、'land rover 2'、'land rover 5'、'mazda 4.55']

目前我正在使用df.apply:

df.id = df.apply(lambda x: x['id'].replace(x['series'], ''), axis =1)
但这会删除字符串的所有实例,即使换言之,如下所示:
'id':['brth 1.4'、'brth 1'、'land ove 1.3'、'land rover 2'、'land rover 5'、'mazda 4.55']

我是否应该以某种方式将regex与df.apply中的变量混合匹配,就像这样

df.id = df.apply(lambda x: x['id'].replace(r'\b' + x['series'], ''), axis =1)

如果我没有弄错您的问题,您可以使用
replace
功能:

df.make = df.make.replace("", test.id)

考虑一个带有
loc
的正则表达式解决方案,它在第一个空格之前提取所有内容:

df.loc[df['make']=='', 'make'] = df['id'].str.extract('(.*) ', expand=False)
或者,使用numpy的
where
,它允许if/then/else条件逻辑:

df['make'] = np.where(df['make']=='', 
                      df['id'].str.extract('(.*) ', expand=False), 
                      df['make'])

使用
str.split
str.get
并仅在
df.make=''


很简单。使用方法如下:

df['make'] = df['id'].str.split(' ').str[0]

IDK为什么要用下面的部分呢

df.loc[df.make == '', 'make']

我得到错误-keyrerror:“make”

所以我做了(万一有人看到同样的错误):


为我工作。

OP需要
id
列的第一个单词。
df.loc[df.make == '', 'make']
df.loc[df['make'] == '', 'make']
df['make'] = df['id']
df['make'] = df.id.str.split().str.get(0)