【问题标题】:Remove part of string after a specific character in Python在Python中的特定字符之后删除部分字符串
【发布时间】:2020-06-17 19:46:37
【问题描述】:

给定一个time 列如下:

             time
0   2019Y8m16d10h
1    2019Y9m3d10h
2  2019Y9m3d10h58s
3    2019Y9m3d10h

如何删除以d 开头的子字符串,我尝试过使用df['time'].str.split('d')[0],但它不起作用。

我想要的结果会是这样。谢谢。

        time
0    2019Y8m16d
1    2019Y9m3d
2    2019Y9m3d
3    2019Y9m3d

【问题讨论】:

    标签: regex python-3.x pandas dataframe split


    【解决方案1】:

    您很接近,需要str[0] 来选择列表,然后添加d

    df['time'] = df['time'].str.split('d').str[0].add('d')
    

    或者:

    df['time'] = df['time'].str.split('(d)').str[:2].str.join('')
    

    print (df)
             time
    0  2019Y8m16d
    1   2019Y9m3d
    2   2019Y9m3d
    3   2019Y9m3d
    

    或者使用Series.str.extract:

    df['time'] = df['time'].str.extract('(.+d)')
    print (df)
             time
    0  2019Y8m16d
    1   2019Y9m3d
    2   2019Y9m3d
    3   2019Y9m3d
    

    【讨论】:

    • 谢谢,这可行,但d 也会丢失,我想保留它。
    【解决方案2】:

    一种可能的解决方案:

    df['time'].str.extract(r'([^d]+d)')
    

    【讨论】:

      【解决方案3】:

      或者您可以简单地使用应用功能来解决如下目的:

      df.apply(lambda x: x['time'].split('d')[0]+'d',axis=1)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-02-26
        • 1970-01-01
        • 2021-10-28
        • 1970-01-01
        • 2020-12-06
        • 2019-11-14
        • 2013-08-05
        • 1970-01-01
        相关资源
        最近更新 更多