簡體   English   中英

PANDAS - 根據最后一次出現的字符刪除字符串的一部分

[英]PANDAS - remove a part of a string based on the last occurrence of a character

我有一個數據框:

df1 = pd.DataFrame({'Item': ["SYD_QANTAS AIRWAYS : LTD_DOC-Turn Cost :Sep", "SYD_QANTAS AIRWAYS LTD_DOC-Turn Cost :Jul", "SYD_QANTAS AIRWAYS LTD_DOC-Turn Cost :Aug"]})

我想從字符“:”的最后一次出現開始刪除字符串的一部分。 這個字符也可以出現在字符串的中間,但我只想從最后一次出現的地方刪除字符串,所以預期的結果是:

在此處輸入圖像描述

我怎么做?

首先,我們可以拆分字符串並加入字符串列表,不包括最后一個條目

你可以試試這樣的

df1['Item']=df1['Item'].apply(lambda x:':'.join(x.split(':')[:-1]))

預期的結果是:

0 SYD_QANTAS AIRWAYS : LTD_DOC-Turn Cost
1      SYD_QANTAS AIRWAYS LTD_DOC-Turn Cost
2      SYD_QANTAS AIRWAYS LTD_DOC-Turn Cost

從反向列表中刪除,直到第一個“:”

import pandas as pd

df1 = pd.DataFrame({'Item': ["SYD_QANTAS AIRWAYS : LTD_DOC-Turn Cost :Sep", 
                             "SYD_QANTAS AIRWAYS LTD_DOC-Turn Cost :Jul", 
                             "SYD_QANTAS AIRWAYS LTD_DOC-Turn Cost :Aug"]})

k = 0
for i in df1:
    while k < len(df1[i]):
        for j in list(reversed(df1[i][k])):
            if j==':':
                j_index = list(reversed(df1[i][k])).index(j)+1
                df1[i][k] = df1[i][k][:-j_index]
                break
        k +=1
print(df1)

輸出:

                                      Item
0  SYD_QANTAS AIRWAYS : LTD_DOC-Turn Cost
1    SYD_QANTAS AIRWAYS LTD_DOC-Turn Cost
2    SYD_QANTAS AIRWAYS LTD_DOC-Turn Cost

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM