为了账号安全,请及时绑定邮箱和手机立即绑定

Python - Pandas - 只删除只有数字的拆分,但如果它有字母则保持

Python - Pandas - 只删除只有数字的拆分,但如果它有字母则保持

开心每一天1111 2022-07-26 09:27:26
我有一个具有两个值的数据框:df = pd.DataFrame({'Col1': ['Table_A112', 'Table_A_112']})我要做的是在 split('_') 只有数字的情况下删除数字。所需的输出是:Table_A112Table_A_为此,我使用以下代码:import pandas as pdimport difflibfrom tabulate import tabulateimport stringdf = pd.DataFrame({'Col1': ['Table_A112', 'Table_A_112']})print(tabulate(df, headers='keys', tablefmt='psql'))df['Col2'] = df['Col1'].str.rstrip(string.digits)print(tabulate(df, headers='keys', tablefmt='psql'))但它给了我以下输出:Table_ATable_A_怎么能做我想做的事?谢谢!
查看完整描述

4 回答

?
UYOU

TA贡献1878条经验 获得超4个赞

这是一种使用方法str.replace:


df = pd.DataFrame({'Col1': ['Table_A112', 'Table_A_112', 'Table_112_avs']})


print(df)


        Col1

0     Table_A112

1    Table_A_112

2  Table_112_avs

df.Col1.str.replace(r'(?:^|_)(\d+)(?:$|_)', '_', regex=True)


0    Table_A112

1      Table_A_

2     Table_avs

Name: Col1, dtype: object


查看完整回答
反对 回复 2022-07-26
?
慕哥9229398

TA贡献1877条经验 获得超6个赞

如果您坚持使用正则表达式解决方案,您可以使用pandas.replace()并积极向后看r'(?<=_)\d+'


import pandas as pd

from tabulate import tabulate


df = pd.DataFrame({'Col1': ['Table_A112', 'Table_A_112']})

print(tabulate(df, headers='keys', tablefmt='psql'))

df= df.replace(regex=r'(?<=_)\d+', value='')

print(tabulate(df, headers='keys', tablefmt='psql'))

这会产生所需的输出。


查看完整回答
反对 回复 2022-07-26
?
蓝山帝景

TA贡献1843条经验 获得超7个赞

我认为str.replace与捕获组一起使用会使模式更简单


sample df


Out[1063]:

          Col1

0   Table_A112

1  Table_A_112

2  Table_111_B


df.Col1.str.replace(r'(_)\d+', r'\1')


Out[1064]:

0    Table_A112

1      Table_A_

2      Table__B

Name: Col1, dtype: object


查看完整回答
反对 回复 2022-07-26
?
慕标琳琳

TA贡献1830条经验 获得超9个赞

您可以执行以下操作:


s = df['Col1'].str.split('_',expand=True).stack()

s.mask(s.str.isdigit(), '').groupby(level=0).agg('_'.join)

输出:


0    Table_A112

1      Table_A_

dtype: object


查看完整回答
反对 回复 2022-07-26
  • 4 回答
  • 0 关注
  • 131 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号