gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 12:16:52 25 4
gpt4 key购买 nike

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

示例 df 代码:

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']

输出:

     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

期望的输出:

       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

最佳答案

python <3.9, Pandas <1.4

使用str.strip/rstrip:

# df.columns = df.columns.str.strip('_x')
# Or,
df.columns = df.columns.str.rstrip('_x') # strip suffix at the right end only.

df.columns
# Index(['W', 'First', 'Last', 'Slice'], dtype='object')

为了避免评论中突出显示的问题:

Beware of strip() if any column name starts or ends with either _ orx beyond the suffix.

你可以使用str.replace,

df.columns = df.columns.str.replace(r'_x$', '')

df.columns
# Index(['W', 'First', 'Last', 'Slice'], dtype='object')

更新:python >= 3.9, pandas >= 1.4

从 1.4 版开始,您很快就可以使用 str.removeprefix/str.removesuffix .

例子:

s = pd.Series(["str_foo", "str_bar", "no_prefix"])
s
0 str_foo
1 str_bar
2 no_prefix
dtype: object

s.str.removeprefix("str_")
0 foo
1 bar
2 no_prefix
dtype: object
s = pd.Series(["foo_str", "bar_str", "no_suffix"])
s
0 foo_str
1 bar_str
2 no_suffix
dtype: object

s.str.removesuffix("_str")
0 foo
1 bar
2 no_suffix
dtype: object

请注意,1.4 尚未发布,但您可以通过安装 development environment of pandas 来使用此功能。 .

关于python - 从 pandas 的列标题中删除前缀(或后缀)子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55679401/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com