簡體   English   中英

如何在字符串的開頭刪除一定數量的字符

[英]How to remove a certain number of characters at the start of a string

我有一個 NHL 自由球員的數據集,但是它們被編號為名稱的一部分。 我試圖讓“1. Alex Ovechkin”看起來像“Alex Ovechkin”。 基本上只是試圖刪除數字、句號和之間的空格。

此處顯示的數據集

我已經使用以下代碼成功刪除了前 10 個條目的數字,但是在第 11 個條目中我需要刪除 4 個字符而不是 3 個。第 100 行也是如此,我需要刪除 5 個字符來刪除數字,句號, 和空間。

這是我一直試圖用來了解有效性的代碼。

free_agents['Player'] = free_agents['Player'].str[3:]

這適用於前 10 個條目,但之后有 11-100 的空格,以及 rest 的句點和空格。

我還嘗試了以下代碼,它適用於前 10 個,但刪除了條目的 rest。

free_agents['Player'] = free_agents['Player'][0:10].str[3:]

我最后一次嘗試是做一個 for 循環,但沒有奏效。

for player in free_agents['Player']:
    if player in free_agents['Player'][0:100]:
        free_agents = free_agents['Player'].str[2:]
    else: 
        free_agents['Player'] = free_agents['Player'].str[4:]

我已經沒有想法可以嘗試了,並且希望在找到最有效的方法方面得到一些幫助。 非常感謝!

假設沒有名稱以數字開頭,您可以嘗試以下操作:

free_agents['Player'] = free_agents['Player'].lstrip('0123456789. ')

這會去除字符串匹配中的前導字符:

  1. 09之間的任何數字
  2. 一個時期.
  3. 空間 .

分開。 並獲取 output 的字符串索引 1

df.Player=df.Player.str.split('\.\s').str[1]
df.Player = df.Player.str.split("\. ").str[1]

基於正則表達式

df["Player"] = df["Player"].str.replace("^\d+\.\s+", repl="", regex=True)
>>> df
          Player
0    1. Player A
1    2. Player B
2   10. Player C
3   11. Player D
4  100. Player E
5  101. Player F

df["Player"] = df["Player"].str.replace("^\d+\.\s+", repl="", regex=True)

>>> df
     Player
0  Player A
1  Player B
2  Player C
3  Player D
4  Player E
5  Player F

暫無
暫無

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

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