如何使用R从数据框的分类列中提取竖线前的首个主行业
嘿,这个需求很常见,用pandas就能轻松搞定!咱们直接看具体的实现方法:
解决方案
假设你的数据框叫df,分类列的列名为category,这里提供两种常用且可靠的方法来提取第一个主行业:
方法1:使用str.split()拆分字符串
这是最直观的方式,通过竖线|拆分每个单元格的字符串,然后取拆分后的第一个元素:
import pandas as pd # 构造示例数据(模拟你的数据结构) data = { "category": [ "Application Platforms|Real Time|Social Network Media Apps", "Games|Mobile Curated Web Software", "Games|Software Networking", "Real Estate|Web Hosting", "Biotechnology Analytics Mobile E-Commerce Entertainment" # 兼容无竖线的情况 ] } df = pd.DataFrame(data) # 提取第一个主行业,生成新列`main_category` df["main_category"] = df["category"].str.split("|").str[0] # 查看处理结果 print(df)
这个方法的优势是自动兼容没有竖线的单元格(直接返回原字符串),不需要额外处理边界情况。
方法2:使用正则表达式str.extract()
如果你习惯用正则匹配,也可以精准提取竖线之前的内容(或整个字符串如果没有竖线):
df["main_category"] = df["category"].str.extract(r"^([^|]+)", expand=False)
正则^([^|]+)的逻辑是:从字符串开头(^)开始,匹配所有非竖线的字符([^|]+),正好对应第一个主行业的内容。
最终效果示例
处理后的数据框会新增main_category列,结果如下:
| category | main_category |
|---|---|
| Application Platforms | Real Time |
| Games | Mobile Curated Web Software |
| Games | Software Networking |
| Real Estate | Web Hosting |
| Biotechnology Analytics Mobile E-Commerce Entertainment | Biotechnology Analytics Mobile E-Commerce Entertainment |
这样就完美满足你的需求啦!
内容的提问来源于stack exchange,提问作者Suraj Kumar Talreja
相关产品推荐
相关产品推荐

