为了账号安全,请及时绑定邮箱和手机立即绑定

通过剥离列名来重命名列的正则表达式

通过剥离列名来重命名列的正则表达式

幕布斯6054654 2022-09-13 19:23:59
我有df有很多列,每列都有重复的值,因为它的调查数据。例如,我的数据如下所示:断续器: Q36r9: sales platforms - Before purchasing a new car         Q36r32: Advertising letters - Before purchasing a new car        Not Selected                                                                         Selected所以我想从列名中删除文本。例如,从第一列中,我想获取“:”和“-”之间的文本。所以它应该是这样的:“销售平台”,在第二部分中,我想转换列的vales,“已选择”应该用列的名称和“未选择”更改为NaN所以期望的输出是这样的:sales platforms                                       Advertising letters      NaN                                             Advertising letters已编辑:另一个问题,如果我有列名称,如:Q40r1c3: WeChat - Looking for a new car - And now if you think again  - Which social media platforms or sources would you use in each situation?如果我只是想在“:”和“-”之间得到一些东西。它应该提取“微信”
查看完整描述

1 回答

?
繁华开满天机

TA贡献1816条经验 获得超4个赞

国际自然分析联盟,


我们可以利用一些正则表达式和贪婪匹配,使用匹配定义模式之间的所有内容.*


import re


df.columns = [re.search(':(.*)-',i).group(1) for i in df.columns.str.strip()]


print(df.columns)


   sales platforms   Advertising letters 

0      Not Selected                  None

编辑:

与贪婪的匹配,我们可以使用+?


+? Quantifier — Matches between one and unlimited times, as few times as possible, expanding as needed (lazy)

Q36r9: sales platforms - Before purchasing a new car    Q40r1c3: WeChat - Looking for a new car - And now if you think again - Which social media platforms or sources would you use in each situation?

0                                                       1



import re


[re.search(':(.+?)-',i).group(1).strip() for i in df.columns]


['sales platforms', 'WeChat']


查看完整回答
反对 回复 2022-09-13
  • 1 回答
  • 0 关注
  • 97 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号