我有一个数据行,其行名为:
rp021047.tot
rp021048.tot
rp021048.L00
rp021048.L01
rp021048.tot
rp021049.tot
rp021050.tot
rp022047.tot
rp022048.tot
rp022049.tot
rp022050.tot
主要关注点是以下行:
rp021048.L00
rp021048.L01
rp021048.tot
这些行的名称完全相同,除了该点之后。对于这样的重复项,我只希望保留结尾为.L*
的文件,删除.tot
行。
我正在努力想办法。我真的很感激人们可能有的任何想法。谢谢
答案 0 :(得分:2)
分割文件名,然后检查条件duplicated
u = s.str.rsplit('.', 1, expand=True)
m = u.duplicated(0) & u[1].eq('tot')
s[~m]
0 rp021047.tot
1 rp021048.tot
2 rp021048.L00
3 rp021048.L01
5 rp021049.tot
6 rp021050.tot
7 rp022047.tot
8 rp022048.tot
9 rp022049.tot
10 rp022050.tot
dtype: object
此处,行4
被删除,因为它是重复的文件名,但扩展名为tot
。
答案 1 :(得分:2)
您需要使用.
进行拆分,然后获取以L
开头的行。
outpt.loc[outpt.str.split('.').str[1].str.startswith('L')]
输出:
2 rp021048.L00
3 rp021048.L01
Name: 0, dtype: object
答案 2 :(得分:0)
根据您要过滤的内容,这是我的建议或解决方案。让我知道这个是否奏效。我试过了,对我有用。
'''
data =['rp021047.tot', 'rp021048.tot', 'rp021048.L00','rp021048.L01',
'rp021048.tot', 'rp021049.tot', 'rp021050.tot','rp022047.tot',
'rp022048.tot','rp022049.tot','rp022050.tot']
df = pd.DataFrame(data)
df.columns =['col1']
df1 = df[(df.col1.str.contains('L'))]
df1
'''
输出
col1
2 rp021048.L00
3 rp021048.L01