首页 > 解决方案 > 熊猫从右向左拉出部分弦后第二次。否则先。如果 2 不存在

问题描述

在从右到左的第二个时期之后,我正在努力拉出任何东西。有些没有两个时期,所以它只是最后一部分。其他人有多个时期。有没有聪明的正则表达式方法来完成这个?

df
    file_name
0   image001.png 
1   image002.jpg
2   image003.jpg
3   1234_001.pdf
4   machine datasheet.pdf
5   asdf_101010101.xlsx
6   not_malicious.docx.pdf
7   example.txt.scf
8   place 1010 - wiki edits.pdf
9   I LOVE YOU.TXT.vbs
10  test.test.read_this.pdf 

期望的输出:

df
    file_name
0   png 
1   jpg
2   jpg
3   pdf
4   pdf
5   xlsx
6   docx.pdf
7   txt.scf
8   pdf
9   TXT.vbs
10  read_this.pdf 

标签: pythonpandas

解决方案


如果列表大小超过 2,则需要拆分然后从列表中返回最后两个,否则返回最后一个元素file_name.

df['file_name'].str.split('.').apply(lambda x: '.'.join(x[-2:]) if len(x)>2 else x[-1])

输出:

0               png
1               jpg
2               jpg
3               pdf
4               pdf
5              xlsx
6          docx.pdf
7           txt.scf
8               pdf
9           TXT.vbs
10    read_this.pdf

推荐阅读