熊猫数据框返回列字符串中的第一个单词

新手上路,请多包涵

我有一个数据框:

 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']

我是否应该像这样将正则表达式与 df.apply 中的变量混合和匹配?

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

原文由 myeewyee 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 333
2 个回答

使用 str.splitstr.get 并使用 loc 分配--- df.make == ''

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

print df

               id    make
0      abarth 1.4  abarth
1        abarth 1  abarth
2  land rover 1.3   rover
3    land rover 2   rover
4    land rover 5   rover
5      mazda 4.55   mazda

原文由 piRSquared 发布,翻译遵循 CC BY-SA 3.0 许可协议

这很简单。使用如下:

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

原文由 Qazi Basheer 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题