如何对列表进行子集化,然后截断其元素(Pandas)

时间:2016-12-24 16:34:06

标签: python pandas data-analysis

我有以下列表,名为my_List

['SAMNY5PAP01_Max',
 'SAMNY5PAP02_Max',
 'SAMNY5PAP03_Max',
 'SAMNY5PAP01_Avg',
 'SAMNY5PAP02_Avg',
 'SAMNY5PAP03_Avg',
 'DVR_PUC_Max_Sum_SAMNY5PAP01',
 'DVR_PUC_Max_Sum_SAMNY5PAP02',
 'DVR_PUC_Max_Sum_SAMNY5PAP03',
 'DVR_PUC_Max_Count_SAMNY5PAP01',
 'DVR_PUC_Max_Count_SAMNY5PAP02',
 'DVR_PUC_Max_Count_SAMNY5PAP03',
 'DVR_PUC_Average_Sum_SAMNY5PAP01',
 'DVR_PUC_Average_Sum_SAMNY5PAP02',
 'DVR_PUC_Average_Sum_SAMNY5PAP03',
 'DVR_PUC_Average_Count_SAMNY5PAP01',
 'DVR_PUC_Average_Count_SAMNY5PAP02',
 'DVR_PUC_Average_Count_SAMNY5PAP03']

我想:

a)仅采用my_List列表的前三个元素(例如

['SAMNY5PAP01_Max', 'SAMNY5PAP02_Max', 'SAMNY5PAP03_Max']

b)然后,只取'_Max'之前的元素片段(例如['SAMNY5PAP01', 'SAMNY5PAP01', 'SAMNY5PAP01']

我知道如何在上面执行步骤'a',如下所示:

my_List = my_List[0:3]

这让我回报:

['SAMNY5PAP01_Max', 'SAMNY5PAP02_Max', 'SAMNY5PAP03_Max']

如何完成上述步骤'b'?

谢谢!

2 个答案:

答案 0 :(得分:2)

如果你想摆脱'_Max',你可以试试这个:

my_List = [x[:-4] for x in my_List[:3]]

或者这个:

my_List = [x.split("_")[0] for x in my_List[:3]]

答案 1 :(得分:1)

如果还有其他可能会导致索引解决方案的问题,例如_MaxLength等,您可以使用正则表达式来适应这些情况。

import re

[st.group(0) for st in [re.search(r'.*[^_Max]', el) for el in my_List[:3]]]