futui 发表于 2023-5-11 12:17:52

pandas 某列提取文字的问题,请大师帮忙,谢谢

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)

想获取清单列里面的每个数据,只获取数字其前面的文字
如第一行要的结果是:航空机场;国企改革;富时罗素,要怎么做?请大师帮忙,谢谢

isdkz 发表于 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)


运行结果如下:

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


可以看到,清单列中每个数据前面的文字已经被成功提取出来了。
页: [1]
查看完整版本: pandas 某列提取文字的问题,请大师帮忙,谢谢