【问题标题】:Remove Specific characters in dataframe删除数据框中的特定字符
【发布时间】:2022-01-20 17:18:34
【问题描述】:

我有一个如下的数据框

示例 1
某些数据框在最后一个句号 '.' 之前的标记名列中总是有 9 个字符

| id | tagname                         | datetime                |
|----|---------------------------------|-------------------------|
| 1  | A2.WAM_A.ACCESS_CLOSE_FAULT_LH  | 2022-01-20 15:07:36.310 |
| 2  | A2.WAM_A.ACCESS_SENSOR_FAULT_RH | 2022-01-20 15:07:36.310 |
| 3  | A2.WAM_A.OUTPUT_POWER_CP_FAULT  | 2022-01-20 15:07:36.310 |

如果我使用,

df['tagname'] = df['tagname'].str[9:]

输出:-

| id | tagname                | datetime                |
|----|------------------------|-------------------------|
| 1  | ACCESS_CLOSE_FAULT_LH  | 2022-01-20 15:07:36.310 |
| 2  | ACCESS_SENSOR_FAULT_RH | 2022-01-20 15:07:36.310 |
| 3  | OUTPUT_POWER_CP_FAULT  | 2022-01-20 15:07:36.310 |

示例 2 但在某些表格中,我在最后一个句号“。”之前的标记名中有不同长度的字符和多个点,如下所示

| id | tagname                                      | datetime                |
|----|----------------------------------------------|-------------------------|
| 1  | A2.AC.CH.CONDITION.1ST_VACUUM_CH             | 2021-09-28 17:31:48.191 |
| 2  | A2.AC.CH.CONDITION.SMALL_LEAK_TEST_VACUUM_CH | 2021-09-28 17:31:48.193 |
| 3  | A2.AC.CH.CONDITION.VACC_VALUE_CH_FLOAT_R270  | 2021-09-28 17:31:48.196 |
| 4  | A2.CP01.PRL2_TRIM1.ONCHANGE.PRL2             | 2021-09-28 17:31:48.199 |
| 5  | AY2.CP01.DL5_TRIM1.ONCHANGE.DL5              | 2021-09-28 17:31:48.199 |

要求:输出
删除列标记名中最后一个点“。”之前的所有字符。在标记名列中

| id | tagname                   | datetime                |
|----|---------------------------|-------------------------|
| 1  | 1ST_VACUUM_CH             | 2021-09-28 17:31:48.191 |
| 2  | SMALL_LEAK_TEST_VACUUM_CH | 2021-09-28 17:31:48.193 |
| 3  | VACC_VALUE_CH_FLOAT_R270  | 2021-09-28 17:31:48.196 |
| 4  | PRL2                      | 2021-09-28 17:31:48.199 |
| 5  | DL5                       | 2021-09-28 17:31:48.199 |

【问题讨论】:

    标签: python pandas dataframe


    【解决方案1】:

    使用str.rsplit:

    示例 1:

    df1['tagname'] = df1['tagname'].str.rsplit('.', 1).str[1]
    print(df1)
    
    # Output
       id                 tagname                 datetime
    0   1   ACCESS_CLOSE_FAULT_LH  2022-01-20 15:07:36.310
    1   2  ACCESS_SENSOR_FAULT_RH  2022-01-20 15:07:36.310
    2   3   OUTPUT_POWER_CP_FAULT  2022-01-20 15:07:36.310
    

    示例 2:

    df2['tagname'] = df2['tagname'].str.rsplit('.', 1).str[1]
    print(df2)
    
    # Output
       id                    tagname                 datetime
    0   1              1ST_VACUUM_CH  2021-09-28 17:31:48.191
    1   2  SMALL_LEAK_TEST_VACUUM_CH  2021-09-28 17:31:48.193
    2   3   VACC_VALUE_CH_FLOAT_R270  2021-09-28 17:31:48.196
    3   4                       PRL2  2021-09-28 17:31:48.199
    4   5                        DL5  2021-09-28 17:31:48.199
    

    【讨论】:

    • 太棒了。感谢您的快速回复
    猜你喜欢
    • 2017-08-17
    • 2023-03-25
    • 1970-01-01
    • 2018-02-02
    • 1970-01-01
    • 1970-01-01
    • 2018-04-16
    • 1970-01-01
    相关资源
    最近更新 更多