我正在使用Pandas从excel文件中获取一个列表。
start_path = r'C:\scratch\\'
File = 'test.xlsx'
import pandas as pd
mylist = []
df = pd.read_excel(start_path + File, sheet_name='GIS')
mylist = df['Column A'].tolist()
列表:
mylist = ['LB-52/LP-7', 'LB-53/LI-5', 'LB-54/LP-8', 'LB-55', 'LB-56', 'ABC']
我的目标是从这个列表创建一个新列表,只包含以LB开头的元素。
newlist = ['LB-52/LP-7', 'LB-53/LI-5', 'LB-54/LP-8', 'LB-55', 'LB-56']
或者只是从列表中删除所有不以'LB'开头的元素(从而从列表中删除ABC)。
newlist = [str(x for x in mylist if "LB" in x)]
我试过上面的方法,结果是:
['<generator object <genexpr> at 0x0000024B5B8F62C8>']
我还尝试了以下方法:
approved = ['LB']
mylist[:] = [str(x for x in mylist if any(sub in x for sub in approved))]
这将获得与之前相同的生成器对象消息。
我觉得这很简单,但我想不通。
5条答案
按热度按时间toe950271#
您可以在列表理解中使用
str.startswith
:图纸:
您可以删除
newlist = [str(x for x in mylist if "LB" in x)]
中的str()
,但这样会留下xxxLBxxx
这样的值(LB
在字符串中)ubbxdtey2#
您还可以使用切片,并使用切片检查所需的索引
uqjltbpv3#
总的来说,panda做同样的工作比python快,因此在“转移”到python之前,你应该尝试在panda中完成大部分的计算和过滤。
uklbhaso4#
kknvjkwl5#
此代码有效