pandas 某列提取文字的问题,请大师帮忙,谢谢
import pandas as pddata = [['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: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]