首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >删除pandas中列标题中的前缀(或后缀)子字符串

删除pandas中列标题中的前缀(或后缀)子字符串
EN

Stack Overflow用户
提问于 2019-04-15 03:49:20
回答 6查看 41.4K关注 0票数 26

我尝试删除位于部分df列名末尾的子字符串_x。

示例df代码:

代码语言:javascript
运行
复制
import pandas as pd

d = {'W_x': ['abcde','abcde','abcde']}
df = pd.DataFrame(data=d)

df['First_x']=[0,0,0]
df['Last_x']=[1,2,3]
df['Slice']=['abFC=0.01#%sdadf','12fdak*4%FC=-0.035faf,dd43','FC=0.5fasff']

输出:

代码语言:javascript
运行
复制
     W_x  First_x Last_x                 Slice
0  abcde      0     1                   abFC=0.01
1  abcde      0     2  12fdak*4%FC=-0.035faf,dd43
2  abcde      0     3                 FC=0.5fasff

所需输出:

代码语言:javascript
运行
复制
       W  First  Last                       Slice
0  abcde      0     1                   abFC=0.01
1  abcde      0     2  12fdak*4%FC=-0.035faf,dd43
2  abcde      0     3                 FC=0.5fasff
EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2019-10-10 20:02:30

我通常使用@cs95方法,但为了方便起见,我将其包装在数据框方法中:

代码语言:javascript
运行
复制
import pandas as pd

def drop_prefix(self, prefix):
    self.columns = self.columns.str.lstrip(prefix)
    return self

pd.core.frame.DataFrame.drop_prefix = drop_prefix

然后,您可以像在pandas add_prefix中已经实现的逆向方法一样使用它。

代码语言:javascript
运行
复制
pd.drop_prefix('myprefix_')
票数 8
EN

Stack Overflow用户

发布于 2019-04-15 03:53:00

代码语言:javascript
运行
复制
df.columns = [col[:-2] for col in df.columns if col[-2:]=='_x' else col]

代码语言:javascript
运行
复制
df.columns = [col.replace('_x', '') for col in df.columns]
票数 15
EN

Stack Overflow用户

发布于 2019-04-15 04:02:12

我建议使用rename函数:

代码语言:javascript
运行
复制
df.rename(columns = lambda x: x.strip('_x'))

输出结果与预期一致

你也可以关注FabienP的评论,并根据Quang Hoang的解决方案进行修改:

代码语言:javascript
运行
复制
df.rename(columns = lambda x: x.replace('_x$', ''))

给出所需的输出。

另一种解决方案很简单:

代码语言:javascript
运行
复制
df.rename(columns = lambda x: x[:-2] if x.endswith('_x') else x)
票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55679401

复制
相关文章

相似问题

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