簡體   English   中英

如何刪除 pandas 中字符前面的所有字符串值?

[英]How to remove all string values that precede a character in pandas?

我有以下 dataframe:

data = {'Name':['Square_Train_1', 'Stims1/Neut/32Neut1.jpg', 'Square_Train_2',
       'Stims1/Neg/114Neg1.jpg', 'Square_Train_3',
       'Stims1/Pos/129Pos1.jpg', 'Stims1/Neut/58Neut1.jpg',
       'Stims1/Neg/13Neg1.jpg', 'Stims1/Pos/5Pos1.jpg',
       'Stims1/Pos/25Pos1.jpg', 'Stims1/Neg/47Neg1.jpg',
       'Stims1/Neut/8Neut1.jpg', 'Stims1/Neg/129Neg1.jpg',
       'Stims1/Neut/42Neut1.jpg', 'Stims1/Pos/98Pos1.jpg',
       'Stims1/Neut/24Neut1.jpg', 'Stims1/Neg/6Neg1.jpg',
       'Stims1/Pos/107Pos1.jpg', 'Stims1/Neg/100Neg1.jpg',
       'Stims1/Pos/77Pos1.jpg', 'Stims1/Neut/3Neut1.jpg',
       'Stims1/Neg/53Neg1.jpg', 'Stims1/Pos/157Pos1.jpg',
       'Stims1/Neut/13Neut1.jpg', 'Stims1/Neut/9Neut1.jpg',
       'Stims1/Pos/104Pos1.jpg', 'Stims1/Neg/64Neg1.jpg',
       'Stims1/Neut/30Neut1.jpg', 'Stims1/Pos/43Pos1.jpg',
       'Stims1/Neg/1Neg1.jpg', 'Stims1/Neut/59Neut1.jpg',
       'Stims1/Neg/172Neg1.jpg', 'Stims1/Pos/56Pos1.jpg',
       'Stims1/Pos/44Pos1.jpg', 'Stims1/Neg/34Neg1.jpg',
       'Stims1/Neut/16Neut1.jpg', 'Stims1/Neut/47Neut1.jpg',
       'Stims1/Neg/21Neg1.jpg', 'Stims1/Pos/96Pos1.jpg',
       'Stims1/Neg/50Neg1.jpg', 'Stims1/Pos/2Pos1.jpg',
       'Stims1/Neut/21Neut1.jpg', 'Stims1/Neg/65Neg1.jpg',
       'Stims1/Pos/35Pos1.jpg', 'Stims1/Neut/51Neut1.jpg',
       'Stims1/Neut/55Neut1.jpg', 'Stims1/Pos/60Pos1.jpg',
       'Stims1/Neg/30Neg1.jpg', 'Stims1/Neut/7Neut1.jpg',
       'Stims1/Pos/9Pos1.jpg', 'Stims1/Neg/41Neg1.jpg',
       'Stims1/Pos/31Pos1.jpg', 'Stims1/Neut/40Neut1.jpg',
       'Stims1/Neg/156Neg1.jpg', 'Stims1/Neg/135Neg1.jpg',
       'Stims1/Pos/71Pos1.jpg', 'Stims1/Neut/26Neut1.jpg',
       'Stims1/Pos/105Pos1.jpg', 'Stims1/Neg/17Neg1.jpg',
       'Stims1/Neut/44Neut1.jpg', 'Stims1/Pos/150Pos1.jpg',
       'Stims1/Neut/57Neut1.jpg', 'Stims1/Neg/12Neg1.jpg',
       'Stims1/Pos/24Pos1.jpg', 'Stims1/Neg/131Neg1.jpg',
       'Stims1/Neut/31Neut1.jpg', 'Stims1/Pos/10Pos1.jpg',
       'Stims1/Neut/11Neut1.jpg', 'Stims1/Neg/118Neg1.jpg',
       'Stims1/Neg/51Neg1.jpg', 'Stims1/Pos/48Pos1.jpg',
       'Stims1/Neut/34Neut1.jpg', 'Stims1/Pos/148Pos1.jpg',
       'Stims1/Neut/22Neut1.jpg', 'Stims1/Neg/176Neg1.jpg',
       'Stims1/Neut/5Neut1.jpg', 'Stims1/Neg/104Neg1.jpg',
       'Stims1/Pos/68Pos1.jpg', 'Stims1/Neut/35Neut1.jpg',
       'Stims1/Pos/14Pos1.jpg', 'Stims1/Neg/136Neg1.jpg',
       'Stims1/Neut/54Neut1.jpg', 'Stims1/Neg/107Neg1.jpg',
       'Stims1/Pos/47Pos1.jpg', 'Stims1/Neut/43Neut1.jpg',
       'Stims1/Neg/58Neg1.jpg', 'Stims1/Pos/20Pos1.jpg',
       'Stims1/Neut/6Neut1.jpg', 'Stims1/Neg/63Neg1.jpg',
       'Stims1/Pos/135Pos1.jpg', 'Stims1/Neut/39Neut1.jpg',
       'Stims1/Neg/164Neg1.jpg', 'Stims1/Pos/125Pos1.jpg',
       'Stims1/Neg/117Neg1.jpg', 'Stims1/Neut/48Neut1.jpg',
       'Stims1/Pos/69Pos1.jpg', 'Stims1/Pos/37Pos1.jpg',
       'Stims1/Neg/159Neg1.jpg', 'Stims1/Neut/36Neut1.jpg',
       'Stims1/Pos/75Pos1.jpg', 'Stims1/Neg/180Neg1.jpg',
       'Stims1/Neut/50Neut1.jpg', 'Stims1/Neg/7Neg1.jpg',
       'Stims1/Pos/11Pos1.jpg', 'Stims1/Neut/52Neut1.jpg',
       'Stims1/Pos/29Pos1.jpg', 'Stims1/Neut/46Neut1.jpg',
       'Stims1/Neg/115Neg1.jpg', 'Stims1/Neg/31Neg1.jpg',
       'Stims1/Pos/66Pos1.jpg', 'Stims1/Neut/14Neut1.jpg',
       'Stims1/Neut/53Neut1.jpg', 'Stims1/Neg/162Neg1.jpg',
       'Stims1/Pos/97Pos1.jpg', 'Stims1/Neg/35Neg1.jpg',
       'Stims1/Neut/45Neut1.jpg', 'Stims1/Pos/32Pos1.jpg',
       'Stims1/Pos/81Pos1.jpg', 'Stims1/Neg/24Neg1.jpg',
       'Stims1/Neut/1Neut1.jpg', 'Stims1/Neut/20Neut1.jpg',
       'Stims1/Neg/69Neg1.jpg', 'Stims1/Pos/52Pos1.jpg',
       'Stims2/Pos/35Pos2.jpg', 'Stims2/Neut/1Neut2.jpg',
       'Stims2/Neg/30Neg2.jpg', 'Stims2/Neg/156Neg2.jpg',
       'Stims2/Neut/59Neut2.jpg', 'Stims2/Pos/150Pos2.jpg',
       'Stims2/Neg/114Neg2.jpg', 'Stims2/Neut/39Neut2.jpg',
       'Stims2/Pos/98Pos2.jpg', 'Stims2/Pos/14Pos2.jpg',
       'Stims2/Neg/24Neg2.jpg', 'Stims2/Neut/51Neut2.jpg',
       'Stims2/Pos/48Pos2.jpg', 'Stims2/Neg/31Neg2.jpg',
       'Stims2/Neut/26Neut2.jpg', 'Stims2/Neg/35Neg2.jpg',
       'Stims2/Neut/40Neut2.jpg', 'Stims2/Pos/60Pos2.jpg',
       'Stims2/Pos/77Pos2.jpg', 'Stims2/Neut/9Neut2.jpg',
       'Stims2/Neg/47Neg2.jpg', 'Stims2/Neg/107Neg2.jpg',
       'Stims2/Pos/66Pos2.jpg', 'Stims2/Neut/55Neut2.jpg',
       'Stims2/Neut/14Neut2.jpg', 'Stims2/Pos/56Pos2.jpg',
       'Stims2/Neg/34Neg2.jpg', 'Stims2/Neg/131Neg2.jpg',
       'Stims2/Pos/97Pos2.jpg', 'Stims2/Neut/52Neut2.jpg',
       'Stims2/Neut/45Neut2.jpg', 'Stims2/Neg/162Neg2.jpg',
       'Stims2/Pos/129Pos2.jpg', 'Stims2/Pos/52Pos2.jpg',
       'Stims2/Neg/104Neg2.jpg', 'Stims2/Neut/48Neut2.jpg',
       'Stims2/Neut/21Neut2.jpg', 'Stims2/Pos/104Pos2.jpg',
       'Stims2/Neg/50Neg2.jpg', 'Stims2/Pos/24Pos2.jpg',
       'Stims2/Neut/34Neut2.jpg', 'Stims2/Neg/176Neg2.jpg',
       'Stims2/Neg/129Neg2.jpg', 'Stims2/Pos/47Pos2.jpg',
       'Stims2/Neut/36Neut2.jpg', 'Stims2/Pos/157Pos2.jpg',
       'Stims2/Neg/58Neg2.jpg', 'Stims2/Neut/7Neut2.jpg',
       'Stims2/Neut/53Neut2.jpg', 'Stims2/Pos/69Pos2.jpg',
       'Stims2/Neg/172Neg2.jpg', 'Stims2/Pos/68Pos2.jpg',
       'Stims2/Neut/35Neut2.jpg', 'Stims2/Neg/100Neg2.jpg',
       'Stims2/Neg/17Neg2.jpg', 'Stims2/Pos/148Pos2.jpg',
       'Stims2/Neut/46Neut2.jpg', 'Stims2/Neut/16Neut2.jpg',
       'Stims2/Pos/105Pos2.jpg', 'Stims2/Neg/159Neg2.jpg',
       'Stims2/Pos/29Pos2.jpg', 'Stims2/Neg/64Neg2.jpg',
       'Stims2/Neut/58Neut2.jpg', 'Stims2/Neut/30Neut2.jpg',
       'Stims2/Pos/71Pos2.jpg', 'Stims2/Neg/41Neg2.jpg',
       'Stims2/Neut/20Neut2.jpg', 'Stims2/Neg/69Neg2.jpg',
       'Stims2/Pos/9Pos2.jpg', 'Stims2/Pos/5Pos2.jpg',
       'Stims2/Neut/13Neut2.jpg', 'Stims2/Neg/1Neg2.jpg',
       'Stims2/Pos/31Pos2.jpg', 'Stims2/Neg/21Neg2.jpg',
       'Stims2/Neut/32Neut2.jpg', 'Stims2/Pos/96Pos2.jpg',
       'Stims2/Neg/118Neg2.jpg', 'Stims2/Neut/57Neut2.jpg',
       'Stims2/Neut/3Neut2.jpg', 'Stims2/Pos/32Pos2.jpg',
       'Stims2/Neg/117Neg2.jpg', 'Stims2/Neg/6Neg2.jpg',
       'Stims2/Pos/10Pos2.jpg', 'Stims2/Neut/44Neut2.jpg',
       'Stims2/Pos/25Pos2.jpg', 'Stims2/Neut/50Neut2.jpg',
       'Stims2/Neg/51Neg2.jpg', 'Stims2/Neut/47Neut2.jpg',
       'Stims2/Neg/135Neg2.jpg', 'Stims2/Pos/125Pos2.jpg',
       'Stims2/Neut/43Neut2.jpg', 'Stims2/Neg/7Neg2.jpg',
       'Stims2/Pos/11Pos2.jpg', 'Stims2/Neut/22Neut2.jpg',
       'Stims2/Pos/20Pos2.jpg', 'Stims2/Neg/180Neg2.jpg',
       'Stims2/Neut/31Neut2.jpg', 'Stims2/Neg/164Neg2.jpg',
       'Stims2/Pos/37Pos2.jpg', 'Stims2/Neg/13Neg2.jpg',
       'Stims2/Neut/5Neut2.jpg', 'Stims2/Pos/135Pos2.jpg',
       'Stims2/Neg/53Neg2.jpg', 'Stims2/Neut/54Neut2.jpg',
       'Stims2/Pos/81Pos2.jpg', 'Stims2/Pos/44Pos2.jpg',
       'Stims2/Neut/11Neut2.jpg', 'Stims2/Neg/115Neg2.jpg',
       'Stims2/Neut/6Neut2.jpg', 'Stims2/Pos/107Pos2.jpg',
       'Stims2/Neg/136Neg2.jpg', 'Stims2/Pos/75Pos2.jpg',
       'Stims2/Neg/65Neg2.jpg', 'Stims2/Neut/42Neut2.jpg',
       'Stims2/Pos/43Pos2.jpg', 'Stims2/Neut/24Neut2.jpg',
       'Stims2/Neg/12Neg2.jpg', 'Stims2/Neut/8Neut2.jpg',
       'Stims2/Pos/2Pos2.jpg', 'Stims2/Neg/63Neg2.jpg']} 
  
# Create DataFrame 
df = pd.DataFrame(data) 
  
# Print the output. 
df 

目標是刪除“/”字符之前的所有字符。

我試過'lstrip':

df['Name'] = df['Name'].map(lambda x: x.lstrip('Stims1/Neut/'))
df['Name'] = df['Name'].map(lambda x: x.lstrip('Stims1/Pos/'))
df['Name'] = df['Name'].map(lambda x: x.lstrip('Pos/'))
df['Name'] = df['Name'].map(lambda x: x.lstrip('2'))
df['Name'] = df['Name'].map(lambda x: x.lstrip('/Pos/'))
df['Name'] = df['Name'].map(lambda x: x.lstrip('Neg/'))
df['Name'] = df['Name'].map(lambda x: x.lstrip('/Neut/'))
df['Name'] = df['Name'].map(lambda x: x.lstrip('ut/'))

lstrip 的問題在於它需要很多不同的輸入來匹配字符串,並且經常會剝離太多的字符串。

我想避免使用“替換”,因為它的效率更低; 它需要輸入字符串的每一個組合。 同樣的問題似乎也適用於're'。

有沒有辦法最有效地刪除“/”之前的所有字符?

你真正想要做的只是抓住文件名並從文件路徑中刪除目錄的 rest 。 如果是這種情況,我會將df.applyos.path.basename一起使用

>>> import os
>>> df['Name'] = df['Name'].apply(os.path.basename)

這導致

>>> df
               Name
0    Square_Train_1
1       32Neut1.jpg
2    Square_Train_2
3       114Neg1.jpg
4    Square_Train_3
..              ...
238     24Neut2.jpg
239      12Neg2.jpg
240      8Neut2.jpg
241       2Pos2.jpg
242      63Neg2.jpg

[243 rows x 1 columns]

暫無
暫無

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

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