首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用python regex将dataframe列值替换为字符串的小数部分

使用python regex将dataframe列值替换为字符串的小数部分
EN

Stack Overflow用户
提问于 2021-10-22 14:04:13
回答 1查看 46关注 0票数 1

我有一个包含列df‘’gravidityAndParity‘的dataframe,它包含如下字符串值:

代码语言:javascript
运行
复制
0      g4p3
1      g2p0
2      g7p2
3      g2p0
4      g7p6

'g‘后面的数字是重力,'p’后面的数字是奇偶校验。我尝试将这一列分成两列:df‘’gravidity‘和df’‘parity

所以我想要的输出是:

代码语言:javascript
运行
复制
print(df['gravidity']) 
代码语言:javascript
运行
复制
0      4
1      2
2      7
3      2
4      7
代码语言:javascript
运行
复制
print(df['parity])
代码语言:javascript
运行
复制
0      3
1      0
2      2
3      0
4      6

我使用regex定义了一个函数来执行此操作,但该函数不能正常工作。

到目前为止,我的代码如下:

代码语言:javascript
运行
复制
import regex as re 
  
# Function to clean the names
def Split_gravidity_parity(gravidityAndParity):
    match_gravidity = re.search('g(\d+)', gravidityAndParity)
    if match_gravidity:
        df['gravidity']= match_gravidity.group(1)
        
    match_parity = re.search('p(\d+)', gravidityAndParity)
    if match_parity:
        df['parity']= match_parity.group(1) 

将函数应用于列:

代码语言:javascript
运行
复制
df['gravidityAndParity'].apply(Split_gravidity_parity)

print(df['gravidity'])
代码语言:javascript
运行
复制
0      4
1      4
2      4
3      4
4      4
代码语言:javascript
运行
复制
print(df['parity'])
代码语言:javascript
运行
复制
0      3
1      3
2      3
3      3
4      3

该函数似乎部分起作用了,因为它似乎只应用于列'g4p3‘中的第一个值。

关于如何正确地对列中的所有值实现此正则表达式函数并将结果输出到两个新列'gravidity‘和'parity’中,有什么帮助吗?

EN

Stack Overflow用户

回答已采纳

发布于 2021-10-22 14:09:11

您可以在Series.str.extract中使用内置的re

代码语言:javascript
运行
复制
import pandas as pd
df=pd.DataFrame({'gravidityAndParity':['g4p3','g2p0','g7p2','g2p0','g7p6']})
df[['gravity','parity']] = df['gravidityAndParity'].str.extract(r'g(\d+)p(\d+)')
# => >>> df
#       gravidityAndParity gravity parity
#     0               g4p3       4      3
#     1               g2p0       2      0
#     2               g7p2       7      2
#     3               g2p0       2      0
#     4               g7p6       7      6

g(\d+)p(\d+)模式将g之后的一个或多个数字捕获到组1中(“重力”列),匹配p,然后将一个或多个数字捕获到组2中(“奇偶校验”列)。

票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69678247

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档