gpt4 book ai didi

python - 交换由分隔符分隔的最后 2 个列字符串

转载 作者:行者123 更新时间:2023-12-04 00:12:53 24 4
gpt4 key购买 nike

我有一个数据框。如果倒数第二个字符串是“pi”,我想交换最后两个由“_”分隔的列

Dataframe 有如下列:

     abc_rte        abc_rte_log     abc_rte_log_pi1     abc_rte_pi1_log     xyz_pnct_pi2_log

所需的列名:

      abc_rte       abc_rte_log     abc_rte_log_pi1     abc_rte_log_pi1     xyz_pnct_log_pi2    

到目前为止我尝试了什么:

        for i in range(0, len(df.columns)):
if str(df.columns[i].split('_')[-2] == 'pi':
df.columns[i].split('_')[-2] = str(df.columns[i].split('_')[-1])

最佳答案

Index.str.replace

df.columns = df.columns.str.replace(r'(pi\d*)_([^_]+)$', r'\2_\1')

>>> df.columns

Index(['abc_rte', 'abc_rte_log', 'abc_rte_log_pi1', 'abc_rte_log_pi1',
'xyz_pnct_log_pi2'],
dtype='object')

正则表达式详细信息:

  • (pi\d*) : 第一个捕获组
    • pi : 匹配字符 pi 字面意思
    • \d* : 匹配零次或多次之间的数字
  • _ : 匹配字符 _
  • ([^_]+) : 第二个捕获组
    • [^_]+ :匹配列表中不存在的任何字符 [_] 一次或多次
  • $ : 在行尾断言位置

在线查看regex demo

关于python - 交换由分隔符分隔的最后 2 个列字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67183230/

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