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

我有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?

如果我只是想在“:”和“-”之间得到一些东西。它应该提取“微信”


幕布斯6054654
浏览 98回答 1
1回答

繁华开满天机

国际自然分析联盟,我们可以利用一些正则表达式和贪婪匹配,使用匹配定义模式之间的所有内容.*import redf.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                                                       1import re[re.search(':(.+?)-',i).group(1).strip() for i in df.columns]['sales platforms', 'WeChat']
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python