鱼C论坛

 找回密码
 立即注册
查看: 1982|回复: 1

[已解决]pandas 某列提取文字的问题,请大师帮忙,谢谢

[复制链接]
发表于 2023-5-11 12:17:52 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
import pandas as pd

data = [['AA','航空机场9|14;国企改革144|1121;富时罗素319|1314'],
        ['BW','汽车整车17|24;新能源车139|505;华为概念175|550;无人驾驶46|117'],
        ['BW','国企改革258|1121;富时罗素547|1314;REITs概念7|24;HS300_100|300']]

columns = ["编号",'清单']
df = pd.DataFrame(data, columns=columns)

print(df)

想获取清单列里面的每个数据,只获取数字其前面的文字
如第一行要的结果是:航空机场;国企改革;富时罗素,要怎么做?请大师帮忙,谢谢
最佳答案
2023-5-11 12:18:28
本帖最后由 isdkz 于 2023-5-11 12:30 编辑

可以使用正则表达式来提取清单列中每个数据前面的文字。具体实现步骤如下:

1. 导入re模块,用于正则表达式操作。

2. 定义一个函数,用于提取清单列中每个数据前面的文字。函数中使用正则表达式匹配数字前面的文字,并返回匹配结果。

3. 调用apply方法,将函数应用到清单列的每个数据上,得到每个数据前面的文字。

下面是完整代码:
import pandas as pd
import re

data = [['AA','航空机场9|14;国企改革144|1121;富时罗素319|1314'],
        ['BW','汽车整车17|24;新能源车139|505;华为概念175|550;无人驾驶46|117'],
        ['BW','国企改革258|1121;富时罗素547|1314;REITs概念7|24;HS300_100|300']]

columns = ["编号",'清单']
df = pd.DataFrame(data, columns=columns)

def extract_text(data):
    pattern = r'(\w+?)\d+\|\d+'
    match = re.findall(pattern, data)
    if match:
        return ';'.join(match)
    else:
        return ''

df['清单'] = df['清单'].apply(extract_text)

print(df)

运行结果如下:
   编号                        清单
0  AA            航空机场;国企改革;富时罗素
1  BW       汽车整车;新能源车;华为概念;无人驾驶
2  BW  国企改革;富时罗素;REITs概念;HS300_

可以看到,清单列中每个数据前面的文字已经被成功提取出来了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-5-11 12:18:28 | 显示全部楼层    本楼为最佳答案   
本帖最后由 isdkz 于 2023-5-11 12:30 编辑

可以使用正则表达式来提取清单列中每个数据前面的文字。具体实现步骤如下:

1. 导入re模块,用于正则表达式操作。

2. 定义一个函数,用于提取清单列中每个数据前面的文字。函数中使用正则表达式匹配数字前面的文字,并返回匹配结果。

3. 调用apply方法,将函数应用到清单列的每个数据上,得到每个数据前面的文字。

下面是完整代码:
import pandas as pd
import re

data = [['AA','航空机场9|14;国企改革144|1121;富时罗素319|1314'],
        ['BW','汽车整车17|24;新能源车139|505;华为概念175|550;无人驾驶46|117'],
        ['BW','国企改革258|1121;富时罗素547|1314;REITs概念7|24;HS300_100|300']]

columns = ["编号",'清单']
df = pd.DataFrame(data, columns=columns)

def extract_text(data):
    pattern = r'(\w+?)\d+\|\d+'
    match = re.findall(pattern, data)
    if match:
        return ';'.join(match)
    else:
        return ''

df['清单'] = df['清单'].apply(extract_text)

print(df)

运行结果如下:
   编号                        清单
0  AA            航空机场;国企改革;富时罗素
1  BW       汽车整车;新能源车;华为概念;无人驾驶
2  BW  国企改革;富时罗素;REITs概念;HS300_

可以看到,清单列中每个数据前面的文字已经被成功提取出来了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-28 03:01

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表